6174问题 --ACM解决方法

6174问题

描述

假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替换原来这个数,并且继续操作。例如,从1234出发,依次可以得4321-1234=3087、8730-378=8352、8532-2358=6174,又回到了它自己!现在要你写一个程序来判断一个四位数经过多少次这样的操作能出现循环,并且求出操作的次数. 比如输入1234执行顺序是1234->3087->8352->6174->6174,输出是4,

输入

第一行输入n,代表有n组测试数据。
接下来n行每行都写一个各位数字互不相同的四位数

输出

经过多少次上面描述的操作才能出现循环

样例输入

1
1234

样例输出

4

==============================================================================================================

解析:

原本这是一道水题,结果被我想多了,开始以为直接用数字会比较耗时,一直在解决 atoi 、 itoa 函数不能使用的问题,将数字与字符串不停地转化,结果...超时了(╯﹏╰),浪费了很多时间,最后改用在数字上的操作,就ok了。

==============================================================================================================

代码如下:

```
#include<stdio.h>int tran(int m)//计算排序后的数字
{int a[4], i, j, t;a[0] = m%10;a[1] = m/10%10;a[2] = m/100%10;a[3] = m/1000;//排序for(i = 0; i < 4; i++)for(j = i+1; j < 4; j++)if(a[i] < a[j]){t = a[i];a[i] = a[j];a[j] = t;}i = a[3]*1000 + a[2]*100 + a[1]*10 + a[0];//小j = a[0]*1000 + a[1]*100 + a[2]*10 + a[3];//大return (j-i);
}
int main (void)
{int n, x, count;scanf("%d", &n);while(n--){scanf("%d", &x);count = 1;while(x != 6174)//计算得到6174的所需次数{x = tran(x);count++;}printf("%d\n", count);}return 0;
}
```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381994.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于第三周——回顾与修正

回顾了一下上个周情况&#xff0c;发现自己存在很多问题&#xff0c;比如说懒就是其中一个特别严重的吧&#xff0c;给自己的计划不能够坚持下来&#xff0c;给自己安排的任务也不能按时完成&#xff0c;比如下个周要干什么&#xff0c;明天做那些题&#xff0c;虽然给自己规划…

A+B Problem III -- ACM解决方法

AB Problem III 描述 求AB是否与C相等。输入 T组测试数据。 每组数据中有三个实数 A,B,C(-10000.0<A,B<10000.0,-20000.0<C<20000.0). 数据保证小数点后不超过4位。输出 如果相等则输出Yes 不相等则输出No样例输入 3 -11.1 11.1 0 11 -11.25 -0.25 1 2 4样例输…

uva 10127——ones

题意&#xff1a;就是给定一个数n&#xff0c;然后求一个10进制都是1的数&#xff0c;使其能整除n&#xff0c;求其位数&#xff0c;思路&#xff1a;以前做BFS的时候遇到类似的题目&#xff0c;当时用队列long long 模拟的&#xff0c;这个也是&#xff0c;不过重点的是要不断…

vim的常用命令

vim &#xff08;Linux下的文本编辑器&#xff09; a 在光标后添加文本A 在本行行末添加文本i 在光标前插入文本I 在本行开始插入文本o 在光标下插入新行O 在光标上插入新行dd 删除光标所在行 &#xff08;2dd即删除此下的两行&#xff0c;3dd以此类推&#xff09;p 粘贴u 取消…

uva 10061——How many zero\'s and how many digits ?

题意&#xff1a;这道题开始是卡了很久的&#xff0c;题意是给定一个数n然后让你求B进制下n&#xff01;有多少个零&#xff0c;和有多少位数&#xff0c;咋一看&#xff0c;是高精度&#xff0c;如果数论不是很熟系。思路&#xff1a;开始是直接抛弃高精度的一来是存不下&…

Linux文件与目录管理常用命令

改变文件属性与权限 chgrp [-R] dirname/filename 改变文件所属用户组 -R 递归更改chown [-R] 账号名称:组名 dirname/filename 改变文件所有者chmod 改变文件权限 urwx 文件所有者权限为rwxgrw 所属用户组权限为rw-or others权限为r–ax 所有权限加上x权限(a-x 略) 创建新…

uva 10673 ——Play with Floor and Ceil

题意&#xff1a;给定两个数n和m&#xff0c;对于n/m一个向上取整&#xff0c;一个向下取整&#xff0c;然后得到一个方程即P*floor(n/m&#xff09;q*ceil(n/m)n;求该公式中p和q的值的大小。思路&#xff1a;很明显&#xff0c;扩展的欧几里得方程&#xff0c;直接带入扩展欧几…

uva 756—— Biorhythms

题意&#xff1a;就是给定三个生理周期&#xff0c;然后从d天开始&#xff0c;问经过多少天后&#xff0c;三个周期会再度重合&#xff01;思路&#xff1a;这个题以前做过&#xff0c;当然现在看来&#xff0c;正解应该使用同余模方程和中国剩余定理&#xff0c;不过值得庆幸的…

linux兴趣小组2017面试题浅析

linux兴趣小组2017面试题 1. 分析下列程序的输出. int main(int argc, char *argv[]) {int t 4;printf("%lu\n", sizeof(t--));printf("%lu\n", sizeof("ab c\nt\012\xa1*2"));return 0; } 若运行printf(“%d\n”,t); 结果为4&#xff0c;因为…

uva 701——The Archeologists\' Dilemma

题意&#xff1a;一个考古学家发现一些疑似外星人的数字&#xff0c;然后硬扯到2的n次方上&#xff0c;给定一个数&#xff0c;使其是2的n次方的前缀&#xff0c;然后求n&#xff0c;还有个要求即该数作为前缀的长度要小于总长度的一半。思路&#xff1a;想了很久不得思路的一道…

linux下搜狗输入法无法输入中文解决方法

今天打开电脑&#xff0c;突然发现之前一直用的很好的搜狗输入法突然炸了&#xff0c;竟然没法输中文&#xff0c;在谷歌了几个解决方法后&#xff0c;终于找到了一个能用的方法。记录下来&#xff0c;已备后用。 解决方法: 关闭搜狗输入法 killall fcitx删除配置文件 ~/.co…

uva 550——Multiplying by Rotation

题意&#xff1a;在一个进制内 比如十进制下179487 * 4 717948和9进制下17 * 4 71 给定三个数&#xff0c;一个是进制&#xff0c;一个数是该组数的最后一个数字&#xff0c;另外一个则是该组数中的一个因数&#xff0c;问该组数中另一个因数是多少位数。思路&#xff1a;由最…

linux与windows编码转化

最近在写实验报告时&#xff0c;由于在机房只能用windows系统&#xff0c;在程序没写完而转战linux时却总是发生出现乱码问题&#xff0c;之前修改几次无果&#xff0c;只好改为英文。今天特地抽出时间来解决这一问题&#xff0c;解决方法如下&#xff1a; 使用iconv命令: ico…

uva 138——Street Numbers

题意&#xff1a;一个老师闲来无事就从他家门口向前走&#xff0c;然后累加门牌数&#xff0c;最后发现向前走和向后累加到的门牌数一样&#xff0c;然后让求该老师家的门牌数&#xff0c;枚举出前6个。思路&#xff1a;假设门牌数为1-n&#xff0c;该老师的门牌号为m&#xff…

再见“小明爬楼梯”问题

在c语言期末考试中&#xff0c;再次见到了“小明爬楼梯”问题&#xff0c;而第一次见到是在某次面试题中&#xff0c;由于当时还没有学到递归部分&#xff0c;因此就仅仅把代码看了一下&#xff0c;然而其中包含的思想却没有弄清楚&#xff0c;因此在考试时见到该题一头雾水&am…

uva 10539——Almost Prime Numbers

题意&#xff1a;给定一个区间范围&#xff0c;然后问在这个范围之内有多少个数是素数的整数倍&#xff0c;就是能够化成一个素数乘方的形式思路&#xff1a;首先要打一张sqrt&#xff08;N5)大小的素数表&#xff0c;然后对在在这个区间的数依次进行枚举做因数分解&#xff0c…

linux下隐藏输入密码

在做课设时&#xff0c;因为在windows上写了一个输入密码时屏幕显示为***的函数&#xff0c;但是在移植到linux系统上时却有问题&#xff0c;提示有错误。 上网搜索&#xff0c;有人说getch()函数的头文件是curses.h,还有人说是conio.h, 但是在ubuntu系统中都不能使用&#xf…

uva 11105——Semi-prime H-numbers

题意&#xff1a;定义了一种H素数&#xff0c;改素数的定义是能够被4整除余数为1&#xff0c;然后给定一个n值&#xff0c;问1到n中有多少个只被分解成两个H素数的数&#xff0c;题目很绕&#xff0c;H素数和他要球的东西一直搞不明白&#xff01;思路&#xff1a;最好的办法是…

文件操作总结(一)

该部分将作为日常学习的总结&#xff0c;内容将会比较杂乱&#xff0c;只有整体上的主题——文件操作。 主要目录的存储内容 /bin 全称binary&#xff0c; 存放普通用户可执行的命令/boot 存放Linux内核及开机启动的相关文件/etc 存放系统的配置文件/usr 存放系统应用程序及相…

uva 294 ——Divisors

题意&#xff1a;给定一个区间[l,r],然后问在该区间内谁的因子最多&#xff01;思路&#xff1a;先大致分析一下&#xff0c;比如对于一个数12&#xff0c;那么可以拆分成2*2*3&#xff0c;就是对一个数分解质因数&#xff0c;然后你会发现在组成因子的时候&#xff0c;每个质因…