題目
問題 f:
6174問題
時間限制:
1 sec 記憶體限制:
128 mb
提交:444 解決:
244[提交]
[狀態]
[討論版]
題目描述
假設你有乙個各位數字互不相同的四位數,把所有的數字從大到小排序後得到a,從小到大後得到b,然後用a-b替換原來這個數,並且繼續操作。例如,從1234出發,依次可以得到4321
-1234
=3087、8730
-378
=8352、8532
-2358
=6174,又回到了它自己!現在要你寫乙個程式來判斷乙個四位數經過多少次這樣的操作能出現迴圈,並且求出操作的次數
比如輸入1234執行順序是1234
->
3087
->
8352
->
6174
->
6174
,輸出是4。
要求編寫函式int
circle
(int num),求數字num按上述規則運算,出現迴圈資料的操作次數,並返回計算結果。
輸入第一行輸入n,代表有n組測試資料。
接下來n行每行都寫乙個各位數字互不相同的四位數
輸出經過多少次上面描述的操作才能出現迴圈
樣例輸入
11234
樣例輸出
4
**塊#include
int count;
intgetnum
(int j,
int num)
void
function
(int num,
int n)
}int num1 = s[3]
*1000
+s[2]*
100+s[1]
*10+s[0];
for(i=
0; i<
3; i++
)for
(j=0
; j<
3-i; j++)}
int num2 = s[3]
*1000
+s[2]*
100+s[1]
*10+s[0];
num = num2-num1;
count++;if
(num!=n)
//每個遞迴函式都要存在限制條件來停止遞迴,該條件只需將函式中遞迴的地方包含在內就行。
function
(num, num);}
intmain
(void
)}
6174問題理工題
描述 假設你有乙個各位數字互不相同的四位數,把所有的數字從大到小排序後得到a,從小到大後得到b,然後用a b替換原來這個數,並且繼續操作。例如,從1234出發,依次可以得到4321 1234 3087 8730 378 8352 8532 2358 6174,又回到了它自己!現在要你寫乙個程式來判斷...
C語言6174問題
描述 假設你有乙個各位數字互不相同的四位數,把所有的數字從大到小排序後得到a,從小到大後得到b,然後用a b替換原來這個數,並且繼續操作。例如,從1234出發,依次可以得到4321 1234 3087 8730 378 8352 8532 2358 6174,又回到了它自己!現在要你寫乙個程式來判斷...
6174問題與sort函式
6174問題 假設你有乙個各位各不相同的四位數,把所有數字從小到大排序後得到啊 從大到小排序後得到b,然後用a b替換原來這個數,並且繼續操作。例如,從1234出發,以此可以得到4321 1234 3087 8730 387 8325 8532 2358 6174。有趣的是,7641 1467 61...