6174

来源:互联网 发布:js input自动换行 编辑:程序博客网 时间:2024/06/16 22:27

    任意给一个四位数(各位数不完全相同),四个数组成一个最大数和一个最小数,他们的差又能组成一个最大数和一个最小数,--------直到某一步得到的差将会出现循环重复。写一个程序统计所有满足以上条件的四位数。(黑洞数,经过不到7步,都可以到达6174)

例如:3100 ― 0013 = 3087

      8730 ― 0378 = 8352

      8532 ― 2358 = 6174

      7641 ― 1467 = 6174


#include "stdio.h"int judge(int i,int j,int p,int q){int a[4];int flag=0;int result[10000];int count=0;a[0]=i; a[1]=j; a[2]=p; a[3]=q;while(!flag){//sortingfor(int m=0;m<4;m++){for(int n=m+1;n<4;n++){if(a[m]>a[n]){int temp=a[m];a[m]=a[n];a[n]=temp;}}}int max_number=a[3]*1000+a[2]*100+a[1]*10+a[0];int min_number=a[0]*1000+a[1]*100+a[2]*10+a[3];int newNumber=max_number-min_number;for(int k=0;k<count;k++){if(a[k]==newNumber){flag=1;return flag;}}if(flag==0){result[count]=newNumber;count++;a[0]=newNumber/1000;a[1]=(newNumber/100)%10;a[2]=(newNumber/10)%10;a[3]=newNumber%10;}}return flag;}void main(){int number=0;int i,j,p,q;for(i=0;i<10;i++){for(j=0;j<10;j++){for(p=0;p<10;p++){for(q=0;q<10;q++){if (i==j && j==p && p==q)continue;else{if (judge(i,j,p,q)==1){number++;printf("%d%d%d%d ",i,j,p,q);}}}}}}printf("the total number is %d",number);}


0 0
原创粉丝点击