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

“玲珑杯”ACM比赛 Round #11 D

2019-11-06 07:31:20
字体:
来源:转载
供稿:网友
DESCRipTION给一个数x,定义一个函数f(x)的结果是x的各位数字的平方和,若经过无数次递归操作之后若结果为1,也就是f(f(f(...f(x)...)))=1,那么这个数被认为是一个特别的数。给出一个数x请问这个数是否特别。INPUT包含多组测试数据(<=20),每组数据一行一个整数x(1<=x<=1000000000)OUTPUT每组数据输出一行YES表示是一个特别的数,否则输出NOSAMPLE INPUT19214SAMPLE OUTPUTYESNONO没什么可以说的。直接打表。范围给了,由于个位数的平方之和,所以最大是9*9^2=729,所以我们只要打出729以内的表就可以了。#include<iostream>#include<cstring>#include<cstdlib>#include<algorithm>#include<cctype>#include<cmath>#include<ctime>#include<string>#include<stack>#include<deque>#include<queue>#include<list>#include<set>#include<map>#include<cstdio>#include<limits.h>#define MOD 1000000007#define fir first#define sec second#define fin freopen("/home/ostreambaba/文档/input.txt", "r", stdin)#define fout freopen("/home/ostreambaba/文档/output.txt", "w", stdout)#define mes(x, m) memset(x, m, sizeof(x))#define Pii pair<int, int>#define Pll pair<ll, ll>#define INF 1e9+7#define inf 0x3f3f3f3f#define Pi 4.0*atan(1.0)#define lowbit(x) (x&(-x))#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define max(a,b) a>b?a:btypedef long long ll;typedef unsigned long long ull;const double eps = 1e-12;const int maxn = 3000;using namespace std;inline int read(){ int x(0),f(1); char ch=getchar(); while (ch<'0'||ch>'9') {if (ch=='-') f=-1;ch=getchar();} while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f;}int k;bool f(int x){ int a=0; while(x){ a=a+(x%10)*(x%10); x/=10; } ++k; if(a!=1&&k<=103){ return f(a); }else if(a==1){ return true; }else{ return false; }}bool vis[730];int main(){ for(int i=1;i<=729;++i){ k=0; vis[i]=f(i); } int t; while(~scanf("%d",&t)){ int sum=0; while(t){ sum=sum+(t%10)*(t%10); t/=10; } if(vis[sum]==true){ PRintf("YES/n"); }else{ printf("NO/n"); } } return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表