题目链接

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`

题目分析:

首先要弄明白不可摸数的概念:任何数m,s(m)都不等于n,则称n为不可摸数而s(m)表示的是数m的真因子之和

然后还要考虑到一点就是说即使当前的数m的值很大,但是m的真因子之和也有可能很小,所以求值时m的值要比实际要求大很多。

这个是完全正确的代码

    #include <stdio.h>
int M= 500050;
int moshu[1010];
long long int a[500050];
void qiumoShu()//函数用于求不可摸数
{
int i,j,m;
m = M/2;//虽然要求的m的值小于1000就好,但是即使m很大相对应的s(m)的值可能很小
for (i=1; i<=m; ++i)
for (j=i+i; j<M; j+=i)
a[j] += i;//每个只要是当前i的倍数的值都要加上i
for (i=0; i<M; i++) //吧小于1000的不可摸数都标记出来
if (a[i]<=1000)
moshu[a[i]] = 1;
} int main ()
{
int a, i, N;
scanf ("%d", &N);
qiumoShu();
while (N --)
{
scanf ("%d", &a);
if (moshu[a])
printf ("no\n");
else
printf ("yes\n"); }
return 0;
}

这个代码错误,明显的思路就解释不通,就是那个标记点的问题,还有就是数组范围太小了开大也肯定会超时的,但是可能是测试数据太弱啦,竟然提交也能过,希望注意一下:

    #include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int main()
{
int i,j,n,m,flag=0;//标记放这里就行
int a[5000]= {0};
a[0]=1;
a[1]=1;
for(i=2; i<5000; i++)
{
a[i]=0;
for(j=1; j<=i/2; j++)
if(i%j==0)
a[i]+=j;
}
cin>>n;
while(n--)
{
cin>>m;
//flag=0 //标记如果在这里重置为0的话就WA
for(i=0; i<=1000; i++)
{
if(m==a[i])
{
flag=1;
break;
}
}
if(flag==0) //问题
{
printf("yes\n");
}
else
{
printf("no\n");
}
}
return 0;
}

HDU 1999 不可摸数 (模拟)的更多相关文章

  1. hdu 1999 不可摸数 水题。

    不可摸数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  2. HDU 1999 不可摸数

    /* 中文题意: 中文翻译: 题目大意:见红字(例如以下) 解题思路:打表,将每一个数的合数之和存在一个数组之中 难点具体解释:用两个for循环写的,第二个for循环主要是解释两个数相乘不超过这个最大 ...

  3. hdu 1999 不可摸数 筛选素数 两次打表

    不可摸数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  4. HDU 1999 不可摸数【类似筛法求真因子和】

    不可摸数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  5. HDU - 1999 不可摸数,快速求因子和

    题意:定义s[m]为m内的因子的和,给定一个n,判断是否有s[m]==n,若没有,则是不可摸数. 思路:首先要打表求出s[m]的值,标记这些出现过的值. 打表求因子和: for(int i=1;i&l ...

  6. 不可摸数 【杭电-HDOJ-1999】 附题

    /* hdu 1999 不可摸数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  7. HUD-1999-不可摸数

    参考博客https://www.cnblogs.com/dongsheng/archive/2012/08/18/2645594.html Problem Description s(n)是正整数n的 ...

  8. HDOJ-1999 不可摸数

    不可摸数 转自:http://www.cnblogs.com/dongsheng/archive/2012/08/18/2645594.html Time Limit: 2000/1000 MS (J ...

  9. 网络流(最大流) HDU 1565 方格取数(1) HDU 1569 方格取数(2)

      HDU 1565 方格取数(1) 给你一个n*n的格子的棋盘,每个格子里面有一个非负数.从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的 ...

随机推荐

  1. tomcat下部署了多个项目启动报错java web error:Choose unique values for the 'webAppRootKey' context-param in your web.xml files

    应该是tomcat下部署了多个项目且都使用log4j. <!--如果不定义webAppRootKey参数,那么webAppRootKey就是缺省的"webapp.root". ...

  2. 用到的C++标准库

    std::set<type>, 模板写的平衡二叉树的集合容器, method: insert, count, std:map<int, string>, 映射和多重映射基于某一 ...

  3. HDU3507_Print Article

    这个题目又是一个典型的dp斜率优化的题目.题意是给你n个数,你需要做的是把这个n个数分为连续的若干段,每段的权值为这段数字的和的平方加上M.求最小的总权值. 我们可以根据题意写出朴素版的dp状态转移方 ...

  4. 后缀树的线性在线构建-Ukkonen算法

    Ukkonen算法是一个非常直观的算法,其思想精妙之处在于不断加字符的过程中,用字符串上的一段区间来表示一条边,并且自动扩展,在需要的时候把边分裂.使用这个算法的好处在于它非常好写,代码很短,并且它是 ...

  5. 【arc076E】Connected?

    Portal -->arc076E Description 给你一个\(R*C\)的矩形,矩形中某些格子的端点上填了\(1\sim n\)这\(n\)个数字,每个数字出现了恰好两遍,现在要将每一 ...

  6. 【poj2068】Nim

    Portal -->poj2068 Description ​  给你\(S\)个石子,有\(2n\)个人分成两队,编号为奇数的一队,编号为偶数的一队,\(2n\)个人按照编号从小到大的顺序拿石 ...

  7. 2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016) F dfs序+树状数组

    Performance ReviewEmployee performance reviews are a necessary evil in any company. In a performance ...

  8. poj2115 C Looooops

    C Looooops Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 29262   Accepted: 8441 Descr ...

  9. elasticsearch配合mysql实现全文搜索

    之前用了sphinx,发现很多东西很久都没更新过了,之前只是知道有elasticsearch这个东西,还以为是java才能用,所以一直没有去了解过,也许sphinx慢慢会被淘汰了吧. 前置条件:需要安 ...

  10. 怎么用spring cloud service-id 进行调用接口

    这里最关键的就是加上@LoadBalanced @SpringBootApplication public class ConsumerMovieApplication { @Bean @LoadBa ...