这题暴力模拟就行了
#include<bits/stdc++.h>
using namespace std;
int t,c,x,anc[41][100005];
int f(int x)
{
int digit[6],mx,mn;
digit[1]=x%10;
digit[2]=x/10%10;
digit[3]=x/100%10;
digit[4]=x/1000%10;
digit[5]=x/10000%10;
sort(digit+1,digit+6);
mn=digit[1]*10000+digit[2]*1000+digit[3]*100+digit[4]*10+digit[5];
mx=digit[1]+digit[2]*10+digit[3]*100+digit[4]*1000+digit[5]*10000;
return mx-mn;
}
void pre()
{
for(int i=0;i<100000;i++)
anc[0][i]=f(i);
for(int i=1;i<41;i++)
for(int j=0;j<100000;j++)
anc[i][j]=anc[i-1][anc[i-1][j]];
}
void print(int x)
{
if(x/10000==0)
printf("0");
if(x/1000==0)
printf("0");
if(x/100==0)
printf("0");
if(x/10==0)
printf("0");
printf("%d\n",x);
}
int main()
{
pre();
scanf("%d%d",&t,&c);
while(t--)
{
scanf("%d",&x);
for(int i=0;i<32;i++)
{
if((1<<i)&c)
x=anc[i][x];
}
print(x);
}
return 0;
}
来源:zr