結果

問題 No.1220 yukipoker
ユーザー Jiro_tech15
提出日時 2020-03-26 17:55:25
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 278 ms / 2,000 ms
コード長 1,965 bytes
コンパイル時間 886 ms
コンパイル使用メモリ 100,572 KB
実行使用メモリ 5,584 KB
最終ジャッジ日時 2024-11-22 04:45:06
合計ジャッジ時間 4,113 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 25
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <string>
#include <math.h>
#include <iomanip>
#include <limits>
#include <list>
#include <queue>
#include <tuple>
#include <map>
#include <stack>
#include <set>
#include <bitset>
#include <functional>
using namespace std;
#define fast_io ios_base::sync_with_stdio (false) ; cin.tie(0) ; cout.tie(0) ;
#define ll long long int
#define rep(i,n) for(int i=0; i<(int)(n); i++)
#define reps(i,n) for(int i=1; i<=(int)(n); i++)
#define REP(i,n) for(int i=n-1; i>=0; i--)
#define REPS(i,n) for(int i=n; i>0; i--)
#define MOD (long long int)(1e9+7)
#define INF (int)(1123456789)
#define LINF (long long int)(112345678901234567)
#define chmax(a, b) a = (((a)<(b)) ? (b) : (a))
#define chmin(a, b) a = (((a)>(b)) ? (b) : (a))
#define all(v) v.begin(), v.end()
typedef pair<int, int> Pii;
typedef pair<ll, ll> Pll;
//x * 10^y
//x7
struct Num{
ll x,y;
Num(ll _x, ll _y){
x = _x;
y = _y;
}
Num operator*(Num obj){
ll X = x * obj.x;
ll Y = y + obj.y;
while(X >= 1e7){
X /= 10;
Y++;
}
return {X, Y};
}
};
Num npow(Num a, ll b){
if(b==0) return Num(1, 0);
else if(b%2==0){Num memo = npow(a, b/2); return memo*memo;}
else return npow(a,b-1) * a;
}
vector<Num> kaijo_memo;
Num kaijo(ll n){
if(kaijo_memo.size() > n) return kaijo_memo[n];
if(kaijo_memo.size() == 0) kaijo_memo.push_back({1, 0});
while(kaijo_memo.size() <= n) kaijo_memo.push_back(kaijo_memo[kaijo_memo.size()-1] * Num(kaijo_memo.size(), 0));
return kaijo_memo[n];
}
int main(void){
//Flush
//M * N! / (N-K)!
//Straight
//(N-K+1) * K! * M^K
//S/F
//K! * (N-K+1)! * M^(k-1) / N!
ll q;cin>>q;
rep(i,q){
ll n,m,k;cin>>n>>m>>k;
Num S = kaijo(k) * kaijo(n-k+1) * npow({m,0}, k-1);
Num F = kaijo(n);
if(S.y < F.y || (S.y == F.y && S.x < F.x)){
cout<<"Straight"<<endl;
}else{
cout<<"Flush"<<endl;
}
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0