結果
問題 | No.389 ロジックパズルの組み合わせ |
ユーザー | ytqm3 |
提出日時 | 2021-05-23 21:38:23 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 456 ms / 2,000 ms |
コード長 | 2,624 bytes |
コンパイル時間 | 2,113 ms |
コンパイル使用メモリ | 206,624 KB |
実行使用メモリ | 73,504 KB |
最終ジャッジ日時 | 2023-08-02 07:31:10 |
合計ジャッジ時間 | 44,059 ms |
ジャッジサーバーID (参考情報) |
judge12 / judge15 |
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 376 ms
73,420 KB |
testcase_01 | AC | 372 ms
73,208 KB |
testcase_02 | AC | 384 ms
73,504 KB |
testcase_03 | AC | 386 ms
73,464 KB |
testcase_04 | AC | 381 ms
73,232 KB |
testcase_05 | AC | 387 ms
73,328 KB |
testcase_06 | AC | 387 ms
73,212 KB |
testcase_07 | AC | 388 ms
73,264 KB |
testcase_08 | AC | 384 ms
73,188 KB |
testcase_09 | AC | 391 ms
73,288 KB |
testcase_10 | AC | 395 ms
73,200 KB |
testcase_11 | AC | 397 ms
73,396 KB |
testcase_12 | AC | 395 ms
73,048 KB |
testcase_13 | AC | 415 ms
73,228 KB |
testcase_14 | AC | 398 ms
73,268 KB |
testcase_15 | AC | 402 ms
73,220 KB |
testcase_16 | AC | 337 ms
73,228 KB |
testcase_17 | AC | 378 ms
73,452 KB |
testcase_18 | AC | 389 ms
73,284 KB |
testcase_19 | AC | 332 ms
73,384 KB |
testcase_20 | AC | 337 ms
73,020 KB |
testcase_21 | AC | 341 ms
73,272 KB |
testcase_22 | AC | 388 ms
73,204 KB |
testcase_23 | AC | 339 ms
73,108 KB |
testcase_24 | AC | 343 ms
73,028 KB |
testcase_25 | AC | 348 ms
73,020 KB |
testcase_26 | AC | 379 ms
73,052 KB |
testcase_27 | AC | 357 ms
73,320 KB |
testcase_28 | AC | 372 ms
73,200 KB |
testcase_29 | AC | 370 ms
73,024 KB |
testcase_30 | AC | 368 ms
73,400 KB |
testcase_31 | AC | 370 ms
73,016 KB |
testcase_32 | AC | 400 ms
73,224 KB |
testcase_33 | AC | 369 ms
73,052 KB |
testcase_34 | AC | 367 ms
73,204 KB |
testcase_35 | AC | 377 ms
73,200 KB |
testcase_36 | AC | 367 ms
73,384 KB |
testcase_37 | AC | 360 ms
73,320 KB |
testcase_38 | AC | 365 ms
73,268 KB |
testcase_39 | AC | 363 ms
73,244 KB |
testcase_40 | AC | 379 ms
73,204 KB |
testcase_41 | AC | 367 ms
73,056 KB |
testcase_42 | AC | 356 ms
73,052 KB |
testcase_43 | AC | 361 ms
73,388 KB |
testcase_44 | AC | 365 ms
73,244 KB |
testcase_45 | AC | 372 ms
73,048 KB |
testcase_46 | AC | 359 ms
73,384 KB |
testcase_47 | AC | 356 ms
73,164 KB |
testcase_48 | AC | 360 ms
73,020 KB |
testcase_49 | AC | 405 ms
73,268 KB |
testcase_50 | AC | 356 ms
73,416 KB |
testcase_51 | AC | 373 ms
73,200 KB |
testcase_52 | AC | 362 ms
73,068 KB |
testcase_53 | AC | 357 ms
73,400 KB |
testcase_54 | AC | 374 ms
73,132 KB |
testcase_55 | AC | 339 ms
73,060 KB |
testcase_56 | AC | 362 ms
73,336 KB |
testcase_57 | AC | 378 ms
73,156 KB |
testcase_58 | AC | 408 ms
73,440 KB |
testcase_59 | AC | 379 ms
73,136 KB |
testcase_60 | AC | 414 ms
73,200 KB |
testcase_61 | AC | 456 ms
73,416 KB |
testcase_62 | AC | 386 ms
73,208 KB |
testcase_63 | AC | 431 ms
73,204 KB |
testcase_64 | AC | 387 ms
73,028 KB |
testcase_65 | AC | 371 ms
73,288 KB |
testcase_66 | AC | 387 ms
73,208 KB |
testcase_67 | AC | 386 ms
73,396 KB |
testcase_68 | AC | 385 ms
73,304 KB |
testcase_69 | AC | 378 ms
73,196 KB |
testcase_70 | AC | 354 ms
73,216 KB |
testcase_71 | AC | 360 ms
73,324 KB |
testcase_72 | AC | 367 ms
73,188 KB |
testcase_73 | AC | 369 ms
73,232 KB |
testcase_74 | AC | 378 ms
73,052 KB |
testcase_75 | AC | 361 ms
73,288 KB |
testcase_76 | AC | 345 ms
73,276 KB |
testcase_77 | AC | 359 ms
73,156 KB |
testcase_78 | AC | 383 ms
73,292 KB |
testcase_79 | AC | 369 ms
73,060 KB |
testcase_80 | AC | 355 ms
73,232 KB |
testcase_81 | AC | 359 ms
73,276 KB |
testcase_82 | AC | 362 ms
73,156 KB |
testcase_83 | AC | 374 ms
73,212 KB |
testcase_84 | AC | 398 ms
73,288 KB |
testcase_85 | AC | 409 ms
73,304 KB |
testcase_86 | AC | 394 ms
73,212 KB |
testcase_87 | AC | 377 ms
73,192 KB |
testcase_88 | AC | 364 ms
73,220 KB |
testcase_89 | AC | 372 ms
73,468 KB |
testcase_90 | AC | 401 ms
73,016 KB |
testcase_91 | AC | 387 ms
73,380 KB |
testcase_92 | AC | 373 ms
73,052 KB |
testcase_93 | AC | 395 ms
73,268 KB |
testcase_94 | AC | 368 ms
73,132 KB |
testcase_95 | AC | 383 ms
73,156 KB |
testcase_96 | AC | 347 ms
73,192 KB |
testcase_97 | AC | 403 ms
73,268 KB |
testcase_98 | AC | 398 ms
73,212 KB |
ソースコード
#include<bits/stdc++.h> typedef int64_t i64; typedef long double f128; using namespace std; template<typename T> void scan(T& n) { cin>>n; return; } void scan() { return; } template<typename T,class... Args> void scan(T& n,Args&... args) { scan(n); scan(args...); return; } template<typename T> void scan_array(T start,T end) { T now=start; for(;now!=end;++now) { scan(*now); } return; } template<typename T> void print(T n) { cout<<n; return; } template<typename T> void println(T n) { print(n); print('\n'); return; } template<typename T,class... Args> void println(T n,Args... args) { print(n); print(' '); println(args...); return; } template<typename T> void print_array(T start,T end) { T now=start; print(*now); ++now; for(;now!=end;++now) { print(' '); print(*now); } print('\n'); return; } i64 pow_mod(i64 a,i64 n,i64 mod) { i64 res=1,now=a; while(n) { if(n&1) { res=res*now%mod; } now=now*now%mod; n>>=1; } return res; } i64 inv_mod(i64 a,i64 mod) { return pow_mod(a,mod-2,mod); } i64 power(i64 a,i64 n) { i64 res=1; for(i64 i=0;i<n;++i) { res*=a; } return res; } bool is_prime(i64 N) { if(N<2) { return 0; } for(i64 i=2;i*i<=N;++i) { if(N%i==0) { return 0; } } return 1; } vector<i64> div_enum(i64 n) { vector<i64> res; for(i64 i=1;i*i<=n;++i) { if(n%i==0) { res.push_back(i); if(i*i!=n) { res.push_back(n/i); } } } sort(res.begin(),res.end()); return res; } struct combination { vector<i64> fact,inv,fact_inv; i64 mod=-1; combination(int Max,const i64 mod_):fact(Max+1,1),inv(Max+1,1),fact_inv(Max+1,1) { mod=mod_; for(i64 i=2;i<=Max;++i) { fact[i]=fact[i-1]*i%mod; inv[i]=mod-(mod/i*inv[mod%i]%mod); fact_inv[i]=fact_inv[i-1]*inv[i]%mod; } } i64 nCk(i64 n,i64 k) { if(n<k) { return 0; } return fact[n]*fact_inv[k]%mod*fact_inv[n-k]%mod; } }; i64 comb(i64 n,i64 k) { if(n<k) { return 0; } if(n<0||k<0) { return 0; } i64 res=1; for(i64 i=1;i<=k;++i) { res*=n-i+1; res/=i; } return res; } int main() { constexpr i64 mod=1000000007; combination COM(3000000,mod); i64 M; scan(M); M+=1; i64 h,cnt=0; bool is_corner=0; while(cin>>h) { if(h==0) { is_corner=1; } M-=h+1; cnt+=1; } if(cnt==1&&is_corner) { println(1); return 0; } if(M<0) { println("NA"); return 0; } println(COM.nCk(M+cnt,M)); return 0; }