6174问题

来源:互联网 发布:巴南银针 淘宝 编辑:程序博客网 时间:2024/06/06 11:03

问题描述:假设你有一个各位数字不同的四位数,把所有数字从大到小排序后得到a,从小到大排序后得到b,然后用a-b替换原来这个数,并且继续操作。例如,从1234出发,依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174,有趣的是7641-1467=6174,回到了它自己。

输入一个n位数,输出操作序列,知道出现循环(即得到的数曾经得到过),输入保证在循环之前最多只会产生1000个整数。

样例输入:1234

样例输出;1234 -> 3087 -> 8352 -> 6174 -> 6174

#include<stdio.h>
#include<stdlib.h>
#include<string.h> 
int getNext(int x)
{
int a,b,n;
char s[10];
//转换成字符串
sprintf(s,"%d",x);
n=strlen(s);
//冒泡排序(从小到大)
for(int i=0;i<n;i++)
for(int j=i;j<n;j++){
if(s[i]>s[j]){
char t=s[i];
s[i]=s[j];
s[j]=t;
}
}
sscanf(s,"%d",&b);//最小值 
//字符串反转
for(int i=0;i<n/2;i++){
char t=s[i];
s[i]=s[n-1-i];
s[n-1-i]=t;

sscanf(s,"%d",&a);//最大值 
return a-b;
}
int main()
{
int num[2000],count;
scanf("%d",&num[0]);
printf("%d",num[0]);
count=1;
for(;;){
//生成并输入下一个数
num[count]=getNext(num[count-1]);
printf(" -> %d",num[count]);
//在数组中寻找新生成的数
int found=0;
for(int i=0;i<count;i++)
if(num[i]==num[count]){
found=1;break;

//如果找到,则退出循环
if(found)break;
count++; 
}
printf("\n");
return 0;
}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 介质流向标识管道温度太高怎么办 雪碧里气体太多瓶子涨得要炸怎么办 餐厅不清洗油烟管道物业该怎么办 用完权健洁净宝后奇痒的厉害怎么办 老房子铸铁暖气管从外锈蚀了怎么办 德意壁挂炉补水多了水压过高怎么办 新空调的散热片铜管漏了怎么办 猪舍被别人推掉漏电电到人怎么办? 网上买的燃气灶连接用软管怎么办 哈弗h3后减振器上支架坏了怎么办 汽车用收录机电机皮带断了怎么办 大便太粗把马桶堵了怎么办 大便过粗把马桶堵了怎么办 大便硬的像石头拉不出来怎么办 家里埋在地下的水管漏水怎么办 埋在墙里的水管漏水怎么办 开发商暗埋水管热熔接头漏水怎么办 钻墙把水管钻破了怎么办 钻墙时不小心把水管钻破了怎么办 孩子把同桌的铅笔盒弄坏了怎么办 水管伐坏了物业不给修怎么办 卫生间埋在地下的水管漏水怎么办 埋在地下的水管冻住了怎么办 洗脸盆下水管有眉笔掉堵了怎么办 楼上打空调眼导致墙面潮湿怎么办 阳台做防水了又贴砖还漏水怎么办 洗菜盆里的盖子吸住拔不起来怎么办 掉小区阴井盖里物业不管怎么办 卫生间下水道被头发堵了怎么办妙招 久量时尚夜光台灯不亮了怎么办 我想做水电暖工程没有资质怎么办 修手机被弄丢了没有开维修单怎么办 手机去维修被老板弄丢了怎么办 5年保修期过后房子楼顶漏水怎么办 墙内水管漏水怎么办3步骤巧维修 下面有地暖下面水管漏水怎么办 热水器接的塑料水管子漏水怎么办 电热水器烧热水时热水管漏水怎么办 户户通位置锁定模块异常1怎么办 户户通位置锁定模块异常3怎么办 逆战安全系统检测客户端异常怎么办