Note
- int数组定义在while循环内,防止处理完四位数字后出现三位数,int数组的内容不改变导致结果出错!
Code:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
if(n==6174){
printf("7641 - 1467 = 6174");
}
while(n!=6174){
int tmp=n,i=0,a,b;
int num[4]={0};
while(tmp>0){
num[i]=tmp%10;
i++;
tmp/=10;
}
sort(num,num+4);
a=num[3]*1000+num[2]*100+num[1]*10+num[0];
b=num[0]*1000+num[1]*100+num[2]*10+num[3];
if(a==b){
printf("%04d - %04d = 0000",a,b);
break;
}
else{
n=a-b;
printf("%04d - %04d = %04d\n",a,b,n);
}
}
return 0;
}
本文介绍了一个关于6174数字游戏的算法实现,通过定义int数组并在while循环内部进行操作来确保每次迭代时数组内容更新,避免了在处理不同位数数字时可能产生的错误。该算法首先检查输入数字是否为6174,如果是,则直接输出特定格式的字符串;如果不是,则进入循环,将数字分解为四位,并对其进行排序,然后计算最大组合与最小组合之差,直到得到6174。

1695

被折叠的 条评论
为什么被折叠?



