这题暴力模拟就行了
#include<bits/stdc++.h>
using namespace std;
int t,c,ans[100001][32],a[10],val;
int calc(int x)
{
for(int i=5;i>0;--i)
a[i]=x%10,x/=10;
sort(a+1,a+6);
int tmpa=0,tmpb=0;
for(int i=1;i<=5;++i)
tmpa=tmpa*10+a[i];
for(int i=5;i>0;--i)
tmpb=tmpb*10+a[i];
return tmpb-tmpa;
}
void prepare()
{
for(int i=0;i<100000;++i)
ans[i][0]=calc(i);
for(int i=0;i<31;++i)
for(int j=0;j<100000;++j)
ans[j][i+1]=ans[ans[j][i]][i];
}
void print(int x)
{
if(x/10000==0)
putchar('0');
if(x/1000==0)
putchar('0');
if(x/100==0)
putchar('0');
if(x/10==0)
putchar('0');
printf("%d",x);
puts("");
}
int main()
{
prepare();
scanf("%d %d",&t,&c);
while (t--)
{
scanf("%d",&val);
for(int i=1;i<31;++i)
if((1<<(i-1))&c)
val=ans[val][i-1];
print(val);
}
return 0;
}
来源:zr