提交时间:2024-11-07 18:05:10

运行 ID: 34372

#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>=j)x-=j,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; } }