Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
34373 | A21μΘ_wjy | 【S】T4 | C++ | 解答错误 | 60 | 119 MS | 293368 KB | 858 | 2024-11-07 18:05:40 |
#include<bits/stdc++.h> #define ll long long using namespace std; const int maxn=1e6+7; bool ST; ll A,n,m; ll nxt[61][maxn]; bool ED; int f(ll x){ int ret=0; while(x){ ret=max(ret,(int)(x%10)); x/=10; } return ret; } inline void init(){ for(int i=0;i<m;i++)nxt[0][i]=(i+f(i))%m; for(int j=1;j<=60;j++)for(int i=0;i<m;i++)nxt[j][i]=nxt[j-1][nxt[j-1][i]]; } inline ll Q(ll A,ll x){ x--; for(int j=60;j>=0;j--){ ll t=(1ll<<j); if(x>=t)x-=t,A=nxt[j][A]; } return A; } signed main(){ cin>>A>>m>>n; // cerr<<abs(&ST-&ED)/1048576.0<<endl; if(n<=1e6){ n--; for(int i=1;i<=n;i++)A=(A+f(A))%m; cout<<A<<endl; return 0; } if(m<=1e6){ init(); cout<<Q(A,n)<<endl; return 0; } }