数字黑洞,开个脑洞!
拿到这个题第一反应看起来不难啊,一上手感觉有些麻烦啊,再后来
啊?啊?啊?好吧还是正经点说下题吧。
首先把所需要的知识先说下:
/*
1.stoi()成功时,函数将转换后的整数作为int值返回。
2.to_string() 将数值变成string类型。
3.insert(pos,n,char a) 从pos位置开始之后n个位置都插入字符a。
*/
再来一波AC代码:
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
bool cmp(int a,int b){
return a>b;
}
int main(){
int n;
cin>>n;
if(n%1111==0){
printf("%d - %d = 0000",n,n);
return 0;
}
int max_s=0,min_s=0;
string s=to_string(n);
s.insert(0, 4 - s.length(), '0');
while(max_s-min_s!=6174){
sort(s.begin(),s.end());
min_s=stoi(s);
sort(s.begin(),s.end(),cmp);
max_s=stoi(s);
printf("%04d - %04d = %04d",max_s,min_s,max_s-min_s);
cout<<endl;
s=to_string(max_s-min_s);
s.insert(0, 4 - s.length(), '0');
}
}