您的位置:首页 > 其它

蓝桥杯 算法提高 数字黑洞

2017-12-27 23:36 666 查看
运用了C++ 算法库中的sort函数,要写两个cmp,记得高位补零

ac代码如下

#include <iostream>
#include <algorithm>
#include <string>
#include <cmath>
using namespace std;
int b[4];
int ans=0;
bool cmp1(int a,int b){
return a<b;
}

bool cmp2(int a,int b){
return a>b;
}

int change(int a[]){
int sum=0;
for(int i=0;i<4;i++){
sum+=a[i]*pow(10,i);
}
return sum;
}

int main()
{
string a;
cin>>a;
for(int i=0;i<4;i++)
b[i]=a[i]-48;
int sum3=0;
while(1){
int sum1=0,sum2=0;
sort(b,b+4,cmp1);//降序
sum1=change(b);
sort(b,b+4,cmp2);//升序
sum2=change(b);
sum3=sum1-sum2;
ans++;
if(sum3==6174)break;
else if(sum3<1000){ //高位补零
b[0]=0;
for(int i=3;i>0;i--){
b[i]=sum3%10;
sum3/=10;
}
}else{
for(int i=3;i>=0;i--){
b[i]=sum3%10;
sum3/=10;
}
}
}
cout<<ans;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: