[PTA]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

#include <stdio.h>
int sum(int num);

int main()
{
    int n,b=0,i=0;
    scanf("%d",&n);
    while ( n!=b ){
        b=n;
        n=sum(n)*3+1;
        i++;
        printf("%d:%d\n",i,n);
    }
    return 0;
}

int sum(int num){
	int n2,i;
    for(i=0,n2=0;i<5;i++){
        n2 += num%10;
        num /= 10;
    }
    return n2;
}

知识点:当一个计算较为复杂时,考虑用函数单独写,更清晰。

发布了48 篇原创文章 · 获赞 0 · 访问量 311

猜你喜欢

转载自blog.csdn.net/weixin_46399138/article/details/105389492