【HDU】 1999 不可摸数

来源:互联网 发布:二进制是谁发明的 知乎 编辑:程序博客网 时间:2024/04/20 01:14

不可摸数


题目链接

  • 不可摸数

题目大意

    s(n)是正整数n的真因子之和,即小于n且整除n的因子和.例如s(12)=1+2+3+4+6=16.如果任何数m,s(m)都不等于n,则称n为不可摸数.
    现在给你一个数n,问这个数是不是不可摸数。


题解

    直接打表。


代码

#include <iostream>#include <cstring>#include <cstdio>#include <cmath>#define MAX 500000using namespace std;int T,n,a[1000005];bool flag[1005];void deal(){    for (int i=1;i<=MAX/2;i++)        for (int j=i+i;j<=MAX;j+=i) a[j]+=i;    for (int i=1;i<=MAX;i++)        if (a[i]<=1000) flag[a[i]]=1;}int main(){    deal();    scanf("%d",&T);    while (T--)    {        scanf("%d",&n);        if (flag[n]) printf("no\n");        else printf("yes\n");    }    return 0;}
0 0
原创粉丝点击