6174
1 /*描述
2 假設(shè)你有一個各位數(shù)字互不相同的四位數(shù),把所有的數(shù)字從大到小排序后得到a,從小到大后得到b,然后用a-b替換原來這個數(shù),并且繼續(xù)操作。
3 例如,從1234出發(fā),依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174,又回到了它自己!
4 現(xiàn)在要你寫一個程序來判斷一個四位數(shù)經(jīng)過多少次這樣的操作能出現(xiàn)循環(huán),并且求出操作的次數(shù)
5
6 比如輸入1234執(zhí)行順序是1234->3087->8352->6174->6174,輸出是4
7
8 輸入
9 第一行輸入n,代表有n組測試數(shù)據(jù)。
10 接下來n行每行都寫一個各位數(shù)字互不相同的四位數(shù)
11 輸出
12 經(jīng)過多少次上面描述的操作才能出現(xiàn)循環(huán)
13 樣例輸入
14 1
15 1234
16 樣例輸出
17 4*/
18 #include<stdio.h>
19 int main()
20 {
21 int n;
22 scanf("%d",&n);
23 while(n--)
24 {
25 int a,b,s[4],i,j,step=0,t,k;
26 scanf("%d",&a);
27 while(1)
28 {
29 k=a;
30 for(i=0;i<4;i++)
31 {
32 s[i]=a%10;
33 a/=10;
34 }
35 for(i=0;i<3;i++)
36 {
37 for(j=0;j<3-i;j++)
38 {
39 if(s[j]>s[j+1])
40 {
41 t=s[j];
42 s[j]=s[j+1];
43 s[j+1]=t;
44 }
45 }
46 }
47 a=0;
48 b=0;
49 for(i=0;i<4;i++)
50 {
51 b=b*10+s[i];
52 a=a*10+s[3-i];
53 }
54 a=a-b;
55 step+=1;
56 if(k==a)
57 break;
58 }
59 printf("%d\n",step);
60 }
61 return 0;
62 }
?
轉(zhuǎn)載于:https://www.cnblogs.com/a604378578/p/3551355.html
總結(jié)
- 上一篇: Codeforces Round #22
- 下一篇: CobarClient源码分析