大学生程序代写

/*6174问题
时间限制:1000 ms  |  内存限制:65535 KB
难度:2
描述
假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到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来源
[张洁烽]原创
上传者
张洁烽

*/
/*1955年,卡普耶卡(D.R.Kaprekar)研究了对四位数的一种变换:任给出四位数k0,
用它的四个数字由大到小重新排列成一个四位数m,再减去它的反序数rev(m),
得出数k1=m-rev(m),然后,继续对k1重复上述变换,得数k2.如此进行下去,卡普耶卡发现,
无论k0是多大的四位数,只要四个数字不全相同,最多进行7次上述变换,就会出现四位数6174
容易证明,对于任何自然数n>=2,连续做K变换必定要形成循环.这是因为由n个数字组成的数
只有有限个的缘故.但是对于n>=5,循环的个数以及循环的长度(指每个循环中所包含数的个数)
尚不清楚*/

#include<stdio.h>//自己的代码
#include<string.h>//6174问题
void  f(char a[],char d[]){
int  b,i,j;//函数功能:传一个字符串类型的数char a[],将char b[]
char c[10];//变为其最大数和最小的差值,即:a[]=3241,经过f(a,b)后,b[]=4321-1234=3087。。。
strcpy(c,a);
for(i=0;i<4;i++)//冒泡排序
for(j=i+1;j<4;j++)//必须先从大到小否则像3805这样的数就会出错
 if(c[i]<c[j]){//先求出最大
 b=c[j];
c[j]=c[i];
 c[i]=b;
 }strcpy(d,c);
 for(i=3,j=0;i>=0;i--)
c[i]=d[j++];
 
for(i=3;i>=0;i--){//最大减最小
if(d[i]-c[i]<0){
--d[i-1];
d[i]=d[i]+10-c[i]+'0';
}
else if(d[i]==c[i]) d[i]='0';
else      d[i]=d[i]-c[i]+'0';
}
}
int main (){
  int n,count;
 char m[10],p[10];
 scanf("%d",&n);
  while(n--){
     count=1;
scanf("%s",m);
        f(m,p);
      while(strcmp(m,p)){
             strcpy(m,p);
           c ount++;
            f(m,p);
}
printf("%d\n",count);
  }
return 0;
}
 
//他人代码,借鉴
01.  

02.#include<stdio.h>   
03.int
get_next(int
x){  
04.    char
s[10];  
05.    int
a,b,i,j,n;  
06.    n=sprintf(s,"%d",x);//把整型数转换为字符型。返回字符串长度。   
07.    for(i=0;i<n;i++)//冒泡法排序。   
08.        for(j=i+1;j<n;j++)  
09.            if(s[i]>s[j]){  
10.                char
t=s[i];  
11.                s[i]=s[j];  
12.                s[j]=t;  
13.            }  
14.    sscanf(s,"%d",&b);//把字符型转换为整型,并赋值给b   
15.    for(i=0;i<n/2;i++){//
翻转字符串。   
16.        char
t=s[i];  
17.        s[i]=s[n-i-1];  
18.        s[n-i-1]=t;  
19.    }  
20.    sscanf(s,"%d",&a);//把字符型的最大数赋值给a   
21.    return
a-b;  
22.}  
23.int
num[2000],count;  
24.int
main(){  
25.    int
m,found;  
26.    scanf("%d",&m);  
27.    while(m--){  
28.        count=1;  
29.        scanf("%d",&num[0]);  
30.            for(;;){  
31.        num[count]=get_next(num[count-1]);  
32.        found=0;  
33.        for(int
i=0;i<count;i++)  
34.            if(num[count]==num[i]){  
35.                found=1;  
36.                break;  
37.            }  
38.            if(found)  
39.                break;  
40.            count++;  
41.            
42.            }  
43.            printf("%d\n",count);  
44.        
45.    }  
46.return
0;
47.}  

 
 
 


 
     //优秀代码
#include<stdio.h>
int Test(int m)
{
     int c[4],j,k,temp,a,b;
     c[0]=m;
     c[1]=m/10;
     c[2]=m/100;
     c[3]=m/1000;
     for(j=0;j<3;++j)
        for(k=j+1;k<4;++k)//冒泡排序
        {
           if(c[j]<c[k])//大到小
           {
               temp=c[j];
               c[j]=c[k];
               c[k]=temp;
           }
        }
        a=1000*c[0]+100*c[1]+10*c[2]+c[3];
        b=1000*c[3]+100*c[2]+10*c[1]+c[0];
     return a-b;
}
int main()
{
  int n,m,i,cnt,c[4];
  scanf("%d",&n);
  for(i=0;i<n;++i)
  {
     cnt=1;
     scanf("%d",&m);

     while(m!=6174)
     {
       m=Test(m);
       cnt++;
     }
      printf("%d\n",cnt);
  }
   return 0;
}
作者:chao1983210400 发表于2013-7-14 16:11:14 原文链接
阅读:32 评论:0 查看评论

[原]NYOJ-6174问题-57的更多相关文章

  1. [原]NYOJ 括号匹配系列2,5

    本文出自:http://blog.csdn.net/svitter 括号匹配一:http://acm.nyist.net/JudgeOnline/problem.php?pid=2 括号匹配二:htt ...

  2. NYOJ-214 单调递增子序列(二) TLE 分类: NYOJ 2014-01-28 22:57 171人阅读 评论(0) 收藏

    #include<stdio.h> #include<stdlib.h> #define max(x,y) x>y?x:y #define MAXX 100005 int ...

  3. NYOJ-949 哈利波特 AC 分类: NYOJ 2013-12-30 12:57 217人阅读 评论(0) 收藏

    #include<stdio.h> int main(){ long long a,b,c,d,e,f; while(scanf("%lld%lld%lld%lld%lld%ll ...

  4. DES原理及代码实现

    一.DES基础知识DES技术特点 DES是一种用56位密钥来加密64位数据的方法    DES采取了分组加密算法:明文和密文为64位分组长度    DES采取了对称算法:加密和解密除密钥编排不同外,使 ...

  5. NYOJ题目57 6174问题

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAscAAAJLCAIAAACE5qzaAAAgAElEQVR4nO3dMXKrutvH8XcT6bOQ1C ...

  6. NYOJ 57 6174问题

    6174问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替 ...

  7. nyoj 57

    6174问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替 ...

  8. NYOJ 1007

    在博客NYOJ 998 中已经写过计算欧拉函数的三种方法,这里不再赘述. 本题也是对欧拉函数的应用的考查,不过考查了另外一个数论基本定理:如何用欧拉函数求小于n且与n互质所有的正整数的和. 记eule ...

  9. 【荐1】Total Commander 7.57 个人使用设置 及 常用快捷键 备忘

    Total Commander 7.57a  下载地址:http://www.baidu.com/s?wd=total commander 7.57 破解版 软件整体预览图:(注意,下面的版本我用的是 ...

随机推荐

  1. 转载 iOS全局检测网络变化的实时状态

      昨天浏览了cocoaChina,发现了一遍文章是优化Reachablity框架的出来的检测网络类,大家都知道这个Reachablity框架是用来检测网络变化的!但是也是有一点bug,事实上,基于此 ...

  2. CentOS Linux解决网卡报错Bringing up interface eth0.....

    问题描述:在VMware里克隆出来的CentOS Linux,开机执行命令:ifconfig...没有看到eth0网卡.然后重启网卡又报以下错误:Bringing up interface eth0: ...

  3. Web前端开发规范【HTML/JavaScript/CSS】

    前言 这是一份旨在增强团队的开发协作,提高代码质量和打造开发基石的编码风格规范,其中包含了 HTML, JavaScript 和 CSS/SCSS 这几个部分.我们知道,当一个团队开始指定并实行编码规 ...

  4. hdu3579(线性同余方程组)

    Hello Kiki Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  5. 深入解读DevOps 开发-运维

    历史回顾 为了能够更好的理解什么是DevOps,我们很有必要对当时还只有程序员(此前还没有派生出开发者,前台工程师,后台工程师之类)这个称号存在的历史进行一下回顾. 如编程之道中所言: 老一辈的程序员 ...

  6. vim对光标所在的数字进行增减

    真是vim会在不经意间给你惊喜...... 现在发现把光标移到某数字的上方,c-a是加1, c-x是减1 当时真有点众里寻他千百度的感觉

  7. TFS中工作项的定制- 字段功能定义

    参考,翻译此页面All FIELD XML Elements Reference(http://msdn.microsoft.com/en-us/library/ms194953.aspx) 对于每一 ...

  8. 【python】-- Redis简介、命令、示例

    Redis简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化 ...

  9. centos修改mysql密码或者进入mysql后解决Access denied for user ''@'localhost' to database 'mysql错误

    原因是MySQL的密码有问题 用mysql匿名用户可以进入数据库,但是看不见mysql数据库. 解决办法:具体操作步骤:关闭mysql:# service mysqld stop然后:# mysqld ...

  10. python基础9 -----python内置函数2

    一.python内置所以函数     Built-in Functions     abs() divmod() input() open() staticmethod() all() enumera ...