結果
問題 | No.1595 The Final Digit |
ユーザー |
![]() |
提出日時 | 2021-07-09 21:51:49 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,630 bytes |
コンパイル時間 | 908 ms |
コンパイル使用メモリ | 92,452 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-01 16:04:35 |
合計ジャッジ時間 | 1,597 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 17 |
ソースコード
#include <iostream>#include <string>#include <cstring>#include <cstdlib>#include <cmath>#include <algorithm>#include <vector>#include <set>#include <map>#include <queue>#include <stack>#include <list>#include <iterator>#include <cassert>#include <numeric>#include <functional>#include <ctime>#include <bitset>#pragma warning(disable:4996)//#define ATCODER#ifdef ATCODER#include <atcoder/all>#endiftypedef long long ll;typedef unsigned long long ull;#define LINF 9223300000000000000#define LINF2 1223300000000000000#define LINF3 1000000000000#define INF 2140000000//const long long MOD = 1000000007;const long long MOD = 998244353;using namespace std;#ifdef ATCODERusing namespace atcoder;#endifvoid solve(){vector<int> a(1005); ll K;scanf("%d%d%d%lld", &a[0], &a[1], &a[2], &K); K--;a[0] %= 10; a[1] %= 10; a[2] %= 10;int id0 = -1, id1 = -1;vector<int> f(1000, -1);for (int i = 0; i <= 1000; i++) {int tmp = a[i] * 100 + a[i + 1] * 10 + a[i + 2];a[i + 3] = (a[i] + a[i + 1] + a[i + 2]) % 10;if (f[tmp] < 0) {f[tmp] = i;}else {id0 = f[tmp]; id1 = i; break;}}assert(id0 >= 0 && id1 >= 0);if (K < id1) {printf("%d\n", a[(int)K]);}else {int m = id1 - id0;int d = (K - id1) % m;printf("%d\n", a[id0 + d]);}return;}int main(){#if 1solve();#elseint T, t;scanf("%d", &T);for (t = 0; t < T; t++) {//printf("Case #%d: ", t + 1);solve();}#endifreturn 0;}