zoukankan      html  css  js  c++  java
  • HDU 1999 不可摸数

    /*
    中文题意:
    中文翻译:
    题目大意:见红字(例如以下)
    解题思路:打表,将每一个数的合数之和存在一个数组之中
    难点具体解释:用两个for循环写的,第二个for循环主要是解释两个数相乘不超过这个最大数的上限,以下的a[i*j]主要是用来记录合数之和,同一时候也保证了数组上限在最大值里面
    关键点:求在1000以内合数之和,打表
    解题人:lingnichong
    解题时间:2014/7/31    17:52
    解题感受:一開始错了几次,原因是数组开小了,后台数组非常大,他又说对随意的m,所以数组要开非常大才会满足题意,才会过。错了努力去改动
    */


    不可摸数

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 8447    Accepted Submission(s): 2183


    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
     


    #include<stdio.h>
    #define MAXN 500000+10
    int a[MAXN]={0};
    int main()
    {
    	int n,t,i,j,m;
    	for(i=1;i<MAXN;i++)
    	for(j=1;j*i<MAXN;j++)
    	a[i*j]+=i;
    	scanf("%d",&t);
    	while(t--)
    	{
    		m=0;
    		scanf("%d",&n);
    		for(i=1;i<MAXN;i++)
    		{
    			if(a[i]-i==n)
    			m=1;
    		}
    		if(m==0)
    		printf("yes
    ");
    		else
    		printf("no
    ");
    	}
    	return 0;
    }


  • 相关阅读:
    配置Log4j(非常具体)
    RapeLay(电车之狼R)的结局介绍 (隐藏结局攻略)
    普林斯顿公开课 算法1-11:并查集的应用
    检查Oracle 中死事务的语句
    app被Rejected 的各种原因翻译
    经典语录和思考总结
    Java实现夺冠概率模拟
    Java实现夺冠概率模拟
    Java实现打印回型嵌套
    Java实现打印回型嵌套
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4021695.html
Copyright © 2011-2022 走看看