問題描述
任意乙個四位數,只要它們各個位上的數字是不全相同的,就有這樣的規律:
1)將組成該四位數的四個數字由大到小排列,形成由這四個數字構成的最大的四位數;
2)將組成該四位數的四個數字由小到大排列,形成由這四個數字構成的最小的四位數(如果四個數中含有0,則得到的數不足四位);
3)求兩個數的差,得到乙個新的四位數(高位零保留)。
重複以上過程,最後一定會得到的結果是6174。
比如:4312 3087 8352 6174,經過三次變換,得到6174
輸入格式
乙個四位整數,輸入保證四位數字不全相同
輸出格式
乙個整數,表示這個數字經過多少次變換能得到6174
樣例輸入
4312
樣例輸出
3提交**
#include
#include
using
namespace std;
int ans =0;
//經過幾次得到6174
bool
compare
(int a,
int b)
intchange
(int n)
sort
(a, a +4)
; m = a[0]
*1000
+ a[1]
*100
+ a[2]
*10+ a[3]
;sort
(a, a +
4, compare)
; pt = a[0]
*1000
+ a[1]
*100
+ a[2]
*10+ a[3]
; ans++
;change
(pt - m);}
intmain()
遞迴 數字黑洞 藍橋杯
問題描述 任意乙個四位數,只要它們各個位上的數字是不全相同的,就有這樣的規律 1 將組成該四位數的四個數字由大到小排列,形成由這四個數字構成的最大的四位數 2 將組成該四位數的四個數字由小到大排列,形成由這四個數字構成的最小的四位數 如果四個數中含有0,則得到的數不足四位 3 求兩個數的差,得到乙個...
藍橋杯 數字黑洞 遞迴解法
任意乙個四位數,只要它們各個位上的數字是不全相同的,就有這樣的規律 1 將組成該四位數的四個數字由大到小排列,形成由這四個數字構成的最大的四位數 2 將組成該四位數的四個數字由小到大排列,形成由這四個數字構成的最小的四位數 如果四個數中含有0,則得到的數不足四位 3 求兩個數的差,得到乙個新的四位數...
藍橋杯 演算法提高VIP 數字黑洞
題目描述 任意乙個四位數,只要它們各個位上的數字是不全相同的,就有這樣的規律 1 將組成該四位數的四個數字由大到小排列,形成由這四個數字構成的最大的四位數 2 將組成該四位數的四個數字由小到大排列,形成由這四個數字構成的最小的四位數 如果四個數中含有0,則得到的數不足四位 3 求兩個數的差,得到乙個...