結果
問題 | No.1049 Zero (Exhaust) |
ユーザー | ytqm3 |
提出日時 | 2021-05-23 20:58:13 |
言語 | C++17 (gcc 13.2.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 94 ms / 2,000 ms |
コード長 | 2,365 bytes |
コンパイル時間 | 2,437 ms |
コンパイル使用メモリ | 203,424 KB |
実行使用メモリ | 57,984 KB |
最終ジャッジ日時 | 2024-04-20 06:29:07 |
合計ジャッジ時間 | 4,718 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
5,248 KB |
testcase_01 | AC | 2 ms
5,376 KB |
testcase_02 | AC | 2 ms
5,376 KB |
testcase_03 | AC | 62 ms
40,448 KB |
testcase_04 | AC | 2 ms
5,376 KB |
testcase_05 | AC | 53 ms
33,664 KB |
testcase_06 | AC | 90 ms
57,984 KB |
testcase_07 | AC | 15 ms
10,112 KB |
testcase_08 | AC | 29 ms
19,200 KB |
testcase_09 | AC | 68 ms
44,288 KB |
testcase_10 | AC | 74 ms
47,872 KB |
testcase_11 | AC | 78 ms
48,016 KB |
testcase_12 | AC | 91 ms
54,984 KB |
testcase_13 | AC | 22 ms
14,976 KB |
testcase_14 | AC | 42 ms
26,496 KB |
testcase_15 | AC | 65 ms
41,472 KB |
testcase_16 | AC | 52 ms
33,920 KB |
testcase_17 | AC | 55 ms
35,456 KB |
testcase_18 | AC | 77 ms
48,896 KB |
testcase_19 | AC | 67 ms
41,600 KB |
testcase_20 | AC | 29 ms
18,944 KB |
testcase_21 | AC | 67 ms
42,752 KB |
testcase_22 | AC | 40 ms
25,344 KB |
testcase_23 | AC | 91 ms
57,856 KB |
testcase_24 | AC | 94 ms
57,864 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; } }; int main() { constexpr i64 mod=1000000007; i64 P,K; scan(P,K); vector<vector<i64>> dp(K+1,vector<i64> (2)); dp[0][0]=1; dp[0][1]=0; for(int i=0;i<K;++i) { dp[i+1][0]=(dp[i][0]*(P+1)+dp[i][1]*2*(P-1))%mod; dp[i+1][1]=(dp[i][0]+dp[i][1]*2*(P-1))%mod; } println(dp[K][0]); return 0; }