題目描述:
任意乙個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快,還有就是二分查詢怎麼找,判斷終止條件,找不...