遞迴之數字黑洞

2021-08-17 15:04:54 字數 1223 閱讀 5583

數學黑洞

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...