2020 排序相减

“排序相减”操作是指对于任意一个四位数n,将四个数字分别进行顺序排序和逆序排序,得到两个数取相减后结果的绝对值n1,然后继续将n1中的四个数字进行顺序排序和逆序排序,得到两个数取相减后结果的绝对值n2,以此类推,最后总会得到一个数字黑洞,无法跳出。

例如:样例2中4176 = 6532 - 2356

Input

第一行输入一个整数T,表示数据组数(1<T<10000);
第二行输入一个正整数n(1000<=n<=9999)和一个正整数k(1<=k<=100),表示操作次数;

Output

对于每组数据,输出对于开始的数据n在第k次“排序相减”后结果绝对值。

Input示例

2
1234 2
3562 1

Output示例

8352
4176

acm入门基础

#include<iostream>
#include<algorithm>
using namespace std;
int n,k;
int num1[4],num2[4];
int main()
{
	int T;
	cin>>T;
	while(T--)
	{
		cin>>n>>k;
		while(k--)
		{
			int t=0;
			while(n)
			{
				num1[t]=n%10;
				num2[t]=num1[t];
				t++;
				n=n/10;
			}
			sort(num1,num1+4,greater<int>());//降序 
			sort(num2,num2+4,less<int>());//升序 
			int x=num1[0]*1000+num1[1]*100+num1[2]*10+num1[3];
			int y=num2[0]*1000+num2[1]*100+num2[2]*10+num2[3];
			n=x-y;//不需要绝对值了,降序得到大数,升序得到小数,大数减小数 
		}
		cout<<n<<endl; 
	}
}

猜你喜欢

转载自blog.csdn.net/love20165104027/article/details/81333689