欢迎访问我的pat甲级题解目录哦https://blog.csdn.net/richenyunqi/article/details/84981078
欢迎访问我的pat乙级题解目录哦https://blog.csdn.net/richenyunqi/article/details/84981369
题目描述
甲级题目描述
乙级题目描述
注意点
(1)题目并未保证输入的n一定是在[1000,10000)之间的数,所以对于输入为53这样的数,第一行输出应为5300 - 0035 = 5265
(2)当输入的数为0或者6174时要特殊判断,输入0输出应为0000 - 0000 = 0000;输入6174输出应为7641 - 1467= 6174,而不能没有输出
(3)输出的数必须为4位,不够4位要在高位补0
C++代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,n1,n2;
scanf("%d",&n);
string num;
do{
num=to_string(n);
while(num.size()<4)//整数不够4位要补0
num+='0';
sort(num.begin(),num.end());//按数字从小到大的顺序对字符数组排序
n2=stoi(num);
reverse(num.begin(),num.end());//翻转num
n1=stoi(num);
n=n1-n2;
printf("%04d - %04d = %04d\n",n1,n2,n);//确保输出为4位整数,不够在高位补0
}while(n!=6174&&n!=0);
return 0;
}
来源:CSDN
作者:日沉云起
链接:https://blog.csdn.net/richenyunqi/article/details/79505825