遞推遞迴練習 J題

2021-07-29 18:11:34 字數 641 閱讀 3425

題目描述:

任意乙個4位自然數n(n不能是4個數字一樣,如1111、2222、….9999是不可以的,n也不能是6174),將組成自然數n的4個數字重新排列,形成乙個最大數和最小數,最大數和最小數相減,其差還是自然數,將差的各數字再重新排列,又形成乙個最大數和最小數,最大數和最小數相減,其差還是自然數。反覆進行,直到差是乙個神秘數6174(數學黑洞)結束。

解題思路:

定義乙個陣列,記錄四個數字。在定義乙個函式,計算差值,其中用sort函式對四個數字進行排序,之後計算最大數和最小數的差。在主函式中輸入n,呼叫函式直到差為6174.

**:#include

#include

using namespace std;

int p(const int &x,const int &y)

int s(int k)

sort (k,k+4,p);

for (o=0,max=0;o<4;o++)

return max-min;

}int main()

if (a[0]!=a[1]||a[1]!=a[2]||a[2]!=a[3])

m=s(a);

else break;

coutif(m==6174)cout<}

cout<}}

遞推遞迴練習 J 數學黑洞

description 任意乙個4位自然數n n不能是4個數字一樣,如1111 2222 9999是不可以的,n也不能是6174 將組成自然數n的4個數字重新排列,形成乙個最大數和最小數,最大數和最小數相減,其差還是自然數,將差的各數字再重新排列,又形成乙個最大數和最小數,最大數和最小數相減,其差還...

ACM(遞迴遞推 J)

題目 輸入乙個數n 不能是1111,2222,3333這類數 然後將這個數重新排列形成乙個最大的數最小的數,然後這兩個數的差如果等於6174這停止,輸入乙個四位數n然後按要求重新排列候做差,輸出每個做得差,然後換一行輸出差的個數。解題思路 定義乙個函式,將n的個十百千位存入陣列中,然後在分別成100...

遞推遞迴練習 中的P題

題意就是利用二分查詢,從3000000個數中找出給定的數。先輸入數,再輸入要查詢的次數,然後輸入查詢的數。思路 看題目就知道,是利用二分查詢的方式快速找出給定的數。其他方法會tle,因為只給了600ms的執行時間。注意用scanf會減少輸入時間,比cin快,還有就是二分查詢怎麼找,判斷終止條件,找不...