蓝桥杯 算法提高 数字黑洞
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;
}
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;
}
相关文章推荐
- 蓝桥杯 算法提高VIP 数字黑洞(java)
- 算法提高 数字黑洞
- 蓝桥杯 算法提高 数字黑洞
- 算法提高 数字黑洞
- 蓝桥杯 算法提高VIP 数字黑洞(Java解题)
- 蓝桥杯 ADV-170算法提高 数字黑洞
- 算法提高 数字黑洞
- 算法提高 ADV-170 数字黑洞
- 算法提高 数字黑洞
- 算法提高 数字黑洞
- pat_b_1019 数字黑洞
- 1019. 数字黑洞 (20)
- PAT 乙级 1019.数字黑洞(20)
- 蓝桥杯 算法提高 9-2 文本加密
- 1019. 数字黑洞 (20)
- 数字黑洞
- 1019. 数字黑洞 (20)
- [NOIP2007] 提高组 洛谷P1097 统计数字
- pat—1019数字黑洞
- Windows Azure真实案例:NeoGeo New Media --SQL Azure提高数字媒体资产解决方案的拓展性