結果
問題 | No.1595 The Final Digit |
ユーザー |
![]() |
提出日時 | 2021-07-09 23:16:51 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 798 bytes |
コンパイル時間 | 2,320 ms |
コンパイル使用メモリ | 170,784 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-07-01 18:17:17 |
合計ジャッジ時間 | 2,433 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 17 |
ソースコード
#include <bits/stdc++.h> using namespace std; //#include <atcoder/all> //using namespace atcoder; using ll=long long; using Graph=vector<vector<int>>; #define MAX 1000000 #define MOD 1000000007 //#define INF 1000000000 #define INF 1000000000000000000 int main(){ int p,q,r; ll K; cin>>p>>q>>r>>K; p%=10; q%=10; r%=10; vector<vector<int>> doubling(1000,vector<int>(60)); for(int i=0;i<10;i++){ for(int j=0;j<10;j++){ for(int k=0;k<10;k++){ doubling[100*i+10*j+k][0]=100*j+10*k+(i+j+k)%10; } } } for(int j=1;j<60;j++){ for(int i=0;i<1000;i++){ doubling[i][j]=doubling[doubling[i][j-1]][j-1]; } } int x=100*p+10*q+r; K-=3; for(int j=0;j<60;j++){ if(K%2==1){ x=doubling[x][j]; } K>>=1; } cout<<x%10<<endl; }