1. 程式人生 > >7-31 掉入陷阱的數字 (15 分)

7-31 掉入陷阱的數字 (15 分)

對任意一個自然數N​0​​,先將其各位數字相加求和,再將其和乘以3後加上1,變成一個新自然數N​1​​;然後對N​1​​重複這種操作,可以產生新自然數N​2​​;……多次重複這種操作,運算結果最終會得到一個固定不變的數N​k​​,就像掉入一個數字“陷阱”。

本題要求對輸入的自然數,給出其掉入“陷阱”的過程。

輸入格式:

在一行內給出一個自然數N​0​​(N​0​​<30000)。

輸出格式:

對於輸入的N​0​​,逐行輸出其掉入陷阱的步驟。第i行描述N掉入陷阱的第i步,格式為: i:N​i​​ (i≥1)。當某一步得到的自然數結果N​k​​(k≥1)與上一步N​k−1​​相同時,停止輸出。

輸入樣例:

5

輸出樣例:

1:16
2:22
3:13
4:13

思路:將數字分解 相加 接著乘以3加1 不斷迴圈知道最後的值不再變化 

 

#include <stdio.h>
int main() 
{
    int x;
    scanf("%d",&x);
    int s = 0;
    int i=0;
    int d;
    int D;
    int t;
    while(x != t){
         t = x;
        do
        {
            d = x%10;
            s += d;
            x /= 10;
        } while(x>0);
         D = 3*s+1;
         s = 0;
         i++;
        printf("%d:%d\n",i,D);
        x = D;
    } 
return 0;
}