C语言(3)6174问题
来源:互联网 发布:ssh连接指定端口 编辑:程序博客网 时间:2024/06/08 11:59
假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替换原来这个数,并且继续操作。例如,从1234出发,依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174,又回到了它自己!现在要你写一个程序来判断一个四位数经过多少次这样的操作能出现循环,并且求出操作的次数
比如输入1234执行顺序是1234->3087->8352->6174->6174,输出是4
- 输入
- 第一行输入n,代表有n组测试数据。
接下来n行每行都写一个各位数字互不相同的四位数 - 输出
- 经过多少次上面描述的操作才能出现循环
- 样例输入
11234
- 样例输出
4
#include <stdio.h>int main(int argc, char **argv){int i,j,n,m;int buf[1024]={0};scanf("%d", &n);for(i=0; i<n; i++){scanf("%d", &buf[i]);}int nbuf[4]={0};int m1,m2,m3,m4;int max,min,temp;for(i=0; i<n; i++){m=0;while(1){nbuf[0]=buf[i]%10;nbuf[1]=(buf[i]%100)/10;nbuf[2]=(buf[i]/100)%10;nbuf[3]=buf[i]/1000;#if 0for(j=0; j<4; j++){printf("%d ", nbuf[j]);}#endif/*最小*/m1=nbuf[0];for(j=0; j<4; j++){if(m1>nbuf[j]){m1=nbuf[j];min=j;}if(m1==nbuf[0]){min=0;}}/*最大*/m4=nbuf[0];for(j=0; j<4; j++){if(m4<nbuf[j]){m4=nbuf[j];max=j;}if(m4==buf[0]){max=0;}}/*第二小*/if(min != 0){m2=nbuf[0];for(j=0; j<4; j++){if((m2>nbuf[j])&&(j!=min)){m2=nbuf[j];}}}else{//printf("test!\n");m2=nbuf[1];for(j=2; j<4; j++){if((m2>nbuf[j])){m2=nbuf[j];}}}m3=nbuf[0]+nbuf[1]+nbuf[2]+nbuf[3]-m1-m2-m4;//printf("\n\n%d %d %d %d\n", m1, m2, m3, m4);temp=m4*1000+m3*100+m2*10+m1-m1*1000-m2*100-m3*10-m4;//printf("temp=%d\n", temp);if(temp == buf[i]){break;}else{buf[i]=temp;}m++;}printf("%d\n", m+1);}return 0;}
阅读全文
0 0
- C语言(3)6174问题
- C语言问题(1)
- C语言的printf格式控制问题(3)
- C语言 3n+1问题
- 8皇后问题(c 语言描述)
- 判断素数问题(C语言实现)
- C语言字节对齐问题(转载)
- C语言字节对齐问题(转载)
- 字节对齐问题(C语言)
- 和尚跳水问题 (C语言)求救
- 哲学家就餐问题(C语言实现)
- c语言字节对齐问题(一)
- c语言字节对齐问题(二)
- 骑士游历问题(C语言代码)
- 双链表排序问题(C语言)
- 判断素数问题(C语言)
- (C语言)ACM中的数据处理问题!
- 判断素数问题(C语言实现)
- QT5.8.0+VS2013+Win10下的配置和安装
- nodejs express+socket.io多线程原始实现
- linux BSP基础问题
- DOM替换replaceWith()和replaceAll() 之前学习了节点的内插入、外插入以及删除方法,这节会学习替换方法replaceWith .replaceWith( newConten
- 平台调用——结构的封送
- C语言(3)6174问题
- Android蓝牙A2dp开发
- 关于有符号数的移位操作
- ios-Storyboard Segue
- IMBA? HDU
- 关于破解ewebeditor V10.9 编辑器的问题
- Caused by: java.net.UnknownHostException
- 代理服务器的原理
- CentOS7 使用yum命令安装Java JDK1.8