HDU - 不可摸数
发布日期:2021-07-01 00:12:54 浏览次数:2 分类:技术文章

本文共 807 字,大约阅读时间需要 2 分钟。

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Problem Description

s(n)是正整数n的真因子之和,即小于n且整除n的因子和.例如s(12)=1+2+3+4+6=16.如果任何

数m,s(m)都不等于n,则称n为不可摸数.

Input

包含多组数据,首先输入T,表示有T组数据.每组数据1行给出n(2<=n<=1000)是整数。

Output

如果n是不可摸数,输出yes,否则输出no。

Sample Input

3

2
5
8

Sample Output

yes

yes
no

Problem solving report:

Description: 按照题中所给定义判断是否为不可摸数。

Problem solving: 标准的筛选法。求出每个数的因子和,打表,求出1000以内所有的因子和是否有

一个数与它对应,有的话就证明等于因子和的这个数不是不可摸数。

#include 
#define N 1000000int main(){ int n, t, i, j; int num[1000010] = {0}, sum[1010] = {0}; for (i = 1; i <= N / 2; i++) for (j = 2 * i; j <= N; j += i) num[j]+=i; for (i = 1; i <= N; i++) if (num[i] <= 1000) sum[num[i]] = 1; scanf("%d", &t); while (t--) { scanf("%d", &n); if (sum[n]) printf("no\n"); else printf("yes\n"); } return 0;}

转载地址:https://lzyws739307453.blog.csdn.net/article/details/79560406 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:HDU - 单词数
下一篇:HDU - 大明A+B(高精度)

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月22日 17时12分16秒