||
数字黑洞
ClearPromise 2019-05-01 14:09:47 1814 已收藏 2
给定一个各位数字不完全相同的四位正整数,如果先把四个数字按递减排序,再按递增排序,然后两者相减(大的减去小的),将会得到一个新的数字,对新的数字重复此步骤,很快就会停在数字黑洞“6147”
https://blog.csdn.net/qq_41303159/article/details/89737426
输入:
6767
输出:
7766-6677=1089
9810-0189=9621
9621-1269=8352
8532-2358=6174
输入:
3333
输出:
3333-3333=0000
分析:显然数字排序首要应把数字放进一个数组内,然后进行两次排序,一次递增一次递减,然后将数组数字合成整数进行相加减,大致代码如下:
#include <cstdio>
#include <algorithm>
using namespace std;
void toarray(int n,int num[])
{
for(int i=0;i<4;i++)
{
num[i]=n%10;
n=n/10;
}
}
int tosum(int num[])
{
int sum=0;
for(int i=0;i<4;i++)
{
sum=sum*10+num[i];
}
return sum;
}
bool cmp(int a,int b)
{
return a>b; //递减排序,获得最大数
}
int main()
{
int n,maxn,minn;
int num[8];
scanf("%d",&n);
while(1)
{
toarray(n,num);
sort(num,num+4);
minn=tosum(num); //得到最小值
toarray(n,num);
sort(num,num+4,cmp);
maxn=tosum(num); //得到最大值
n=maxn-minn;
printf("%d-%d=%d\n",maxn,minn,n);
if(n==0||n==6174) break;
}
return 0;
}
————————————————
版权声明:本文为CSDN博主「ClearPromise」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41303159/article/details/89737426
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2025-1-7 10:59
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社