Problem A: 【高级语言程序设计】6.18 数字黑洞

Problem A: 【高级语言程序设计】6.18 数字黑洞

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 3447  Solved: 852
[Submit] [Status] [Web Board] [Creator:]

Description

编任意输入一个 3 的倍数的正整数,先把这个数的每一个数位上的数字都计算其立方,再将各位数字相加,得到一个新数,然后把这个新数的每一个数位上的数字再计算其立方,再将各位数字相加,......,重复运算下去,结果都为 153 。如果换另一个 3 的倍数试一试,仍然可以得到同样的结论,因此 153 被称为“数字黑洞”。 请采用函数递归方法编程验证任意的是 3 的倍数的正整数都是“数字黑洞”,并输出验证的步数。如果是黑洞数字,输出验证的步数及Yes,如果不是黑洞黑洞,则输出No。


Sample Input Copy

99

Sample Output Copy

99
1458
702
351
153
Yes

HINT

相关知识

  1. 数字黑洞的定义:数字黑洞是指一个正整数,经过一系列特定运算后,最终得到的结果始终为153。
  2. 数字黑洞的特点:无论从哪个3的倍数的正整数开始,经过一系列运算后都会得到153,这是一个不变的结论。
  3. 递归运算:为了实现这个运算规律,可以使用递归函数来计算每一步的结果,并不断调用该函数,直到得到的结果为153。
#include  <stdio.h>
int IsDnum(int num);
int main(void)
{
    //=======begin=======




    //========end========
}
//函数功能:验证n是黑洞数,并记录验证的步数
int IsDnum(int num)
{
    //=======begin=======




    //========end========
}