結果
問題 |
No.220 世界のなんとか2
|
ユーザー |
|
提出日時 | 2015-05-17 16:01:35 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 1,000 ms |
コード長 | 517 bytes |
コンパイル時間 | 1,010 ms |
コンパイル使用メモリ | 159,744 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-07-06 05:02:58 |
合計ジャッジ時間 | 1,631 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 19 |
ソースコード
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll dp[25][3][2]; ll solve(int dig, int mod, int used){ if(dig == 0){ return (mod == 0 || used); } if(dp[dig][mod][used] != -1){ return dp[dig][mod][used]; } ll res = 0; for(int d=0;d<10;d++){ res += solve(dig - 1, (mod + d) % 3, used | (d == 3)); } return dp[dig][mod][used]=res; } int main(){ memset(dp, -1, sizeof(dp)); int P; cin >> P; ll res = solve(P, 0, 0) - 1; cout << res << endl; return 0; }