數學黑洞
time limit: 1500 ms memory limit: 65536 kib
submit statistic discuss
problem description
任意乙個4位自然數n(n不能是4個數字一樣,如1111、2222、….9999是不可以的,n也不能是6174),將組成自然數n的4個數字重新排列,形成乙個最大數和最小數,最大數和最小數相減,其差還是自然數,將差的各數字再重新排列,又形成乙個最大數和最小數,最大數和最小數相減,其差還是自然數。反覆進行,直到差是乙個神秘數6174(數學黑洞)結束。
input
輸入資料有多組,每組佔一行,每行包含乙個4位自然數n。輸入檔案直到eof為止!
output
對每組輸入,輸出有2行。第一行是所有的差,以空格分隔,最後乙個數後也有空格;第二行是差的個數。
sample input
1000
1500
3000
sample output
999 8991 8082 8532 6174
5 5085 7992 7173 6354 3087 8352 6174
7 2997 7173 6354 3087 8352 6174
6hint
source
#include
#include
#include
int min[4]= ;
int max[4]= ;
int num[4]= ;
int main()
}t=num[i];
num[i]=num[f];
num[f]=t;
}for(i=0,k=0; i<=3; i++)
for(i=3,k=0; i>=0; i--)
n=(max[0]*1000+max[1]*100+max[2]*10+max[3])-(min[0]*1000+min[1]*100+min[2]*10+min[3]);
printf("%d ",n);
s++;
}printf("\n");
printf("%d\n",s);
}return
0;}
think:
首先開3個陣列,乙個存分解的n的各個部分,然後把這些部分排好序,然後乙個陣列存放從大到小的數,另乙個存放從小到大的數,在條件n!=6174的前提加減即可
遞迴 數字黑洞 藍橋杯
問題描述 任意乙個四位數,只要它們各個位上的數字是不全相同的,就有這樣的規律 1 將組成該四位數的四個數字由大到小排列,形成由這四個數字構成的最大的四位數 2 將組成該四位數的四個數字由小到大排列,形成由這四個數字構成的最小的四位數 如果四個數中含有0,則得到的數不足四位 3 求兩個數的差,得到乙個...
藍橋杯 數字黑洞 遞迴解法
任意乙個四位數,只要它們各個位上的數字是不全相同的,就有這樣的規律 1 將組成該四位數的四個數字由大到小排列,形成由這四個數字構成的最大的四位數 2 將組成該四位數的四個數字由小到大排列,形成由這四個數字構成的最小的四位數 如果四個數中含有0,則得到的數不足四位 3 求兩個數的差,得到乙個新的四位數...
1019 數字黑洞
給定任乙個各位數字不完全相同的4位正整數,如果我們先把4個數字按非遞增排序,再按非遞減排序,然後用第1個數字減第2個數字,將得到乙個新的數字。一直重複這樣做,我們很快會停在有 數字黑洞 之稱的6174,這個神奇的數字也叫kaprekar常數。例如,我們從6767開始,將得到 7766 6677 10...