結果
問題 | No.1595 The Final Digit |
ユーザー | Mazesoba |
提出日時 | 2021-07-11 18:33:51 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 1,667 bytes |
コンパイル時間 | 1,779 ms |
コンパイル使用メモリ | 169,700 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-02 03:10:39 |
合計ジャッジ時間 | 2,479 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
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 | 2 ms
5,376 KB |
testcase_04 | AC | 2 ms
5,376 KB |
testcase_05 | AC | 2 ms
5,376 KB |
testcase_06 | AC | 2 ms
5,376 KB |
testcase_07 | AC | 2 ms
5,376 KB |
testcase_08 | AC | 2 ms
5,376 KB |
testcase_09 | AC | 3 ms
5,376 KB |
testcase_10 | AC | 2 ms
5,376 KB |
testcase_11 | AC | 3 ms
5,376 KB |
testcase_12 | AC | 2 ms
5,376 KB |
testcase_13 | AC | 2 ms
5,376 KB |
testcase_14 | AC | 2 ms
5,376 KB |
testcase_15 | AC | 2 ms
5,376 KB |
testcase_16 | AC | 2 ms
5,376 KB |
testcase_17 | AC | 2 ms
5,376 KB |
testcase_18 | AC | 2 ms
5,376 KB |
testcase_19 | AC | 2 ms
5,376 KB |
ソースコード
// 問題の URL を書いておく // #include <bits/stdc++.h> using namespace std; #define ENABLE_PRINT #if defined(ENABLE_PRINT) #define Print(v) \ do {\ cerr << #v << ": " << v << endl; \ }while(0) #define PrintVec(v) \ do {\ for(int __i = 0; __i < v.size(); ++__i) \ { \ cerr << #v << "[" << __i << "]: " << v[__i] << endl; \ }\ }while(0) #define P(fmt, ...) fprintf(stderr, fmt, __VA_ARGS__) #define LP fprintf(stderr, "L: %d\n", __LINE__) #else #define Print(v) ((void)0) #define PrintVec(v) ((void)0) #define P(fmt, ...) ((void)0) #define LP ((void)0) #endif #define rep(i, n) for(int i = 0; i < (int)(n); ++i) using ll = long long; int moves[10][10][10]; int moved[10][10][10]; int main(int, const char**) { rep(i, 10) rep(j, 10) rep(k, 10) { moves[i][j][k] = (i + j + k) % 10; moved[i][j][k] = -1; } int p, q, r; ll K; cin >> p >> q >> r >> K; p %= 10; q %= 10; r %= 10; int t = 0; vector<int> ans; while(true) { if(moved[p][q][r] != -1) { break; } moved[p][q][r] = t++; auto nx = moves[p][q][r]; ans.push_back(nx); p = q; q = r; r = nx; } auto clen = t - moved[p][q][r]; auto plen = moved[p][q][r]; P("clen: %d\n", clen); P("plen: %d\n", plen); P("-----\n", 0); rep(i, (int)ans.size()) { P("%d: %d\n", i, ans[i]); } K -= 4; if(K < plen) { cout << ans[K] << endl; } else { auto rest = K - plen; auto m = rest % clen; cout << ans[plen + m] << endl; } return 0; }