首页 > 学院 > 开发设计 > 正文

萌萌哒的第四题

2019-11-06 07:29:00
字体:
来源:转载
供稿:网友

DESCRipTION

给一个数x,定义一个函数f(x)的结果是x的各位数字的平方和,若经过无数次递归操作之后若结果为1,也就是f(f(f(…f(x)…)))=1,那么这个数被认为是一个特别的数。给出一个数x请问这个数是否特别。

INPUT 包含多组测试数据(<=20),每组数据一行一个整数x(1<=x<=1000000000) OUTPUT 每组数据输出一行YES表示是一个特别的数,否则输出NO SAMPLE INPUT 19 2 14 SAMPLE OUTPUT YES NO NO 转态数其实很少。

#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;int mark[1005], flag;void fun(int n){ if(flag == 0) return; int sum = 0 , x; while(n) { x = n%10; n /= 10; sum += x*x; } if(sum == 1) return; if(mark[sum] ==1) { flag = 0; return; } mark[sum] = 1; fun(sum);}int main(){ int n; while(scanf("%d",&n) != EOF) { memset(mark,0,sizeof(mark)); flag = 1; fun(n); if(flag) PRintf("YES/n"); else printf("NO/n"); } return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表