zoukankan      html  css  js  c++  java
  • HDU 1999 不可摸数【类似筛法求真因子和】

    不可摸数

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


    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
     
    Author
    Zhousc@ECJTU
     
    Source
    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    #include<set>
    #include<map>
    #include<sstream>
    #include<queue>
    #include<cmath>
    #include<list>
    #include<vector>
    #include<string>
    using namespace std;
    #define long long ll
    const double PI = acos(-1.0);
    const double eps = 1e-6;
    const int inf = 0x3f3f3f3f;
    const int N = 100005;
    int n, m, tot;
    int a[10550]={0};
    int r[550], c[550];
    int x, y, pr, pc;
    int ok(int n)
    {
        int sum = 0;
        for(int i=1 ;i<n; i++)
        {
            if(n % i == 0)
            {
                sum += i;
            }
        }
        return sum;
    }
    
    int main()
    {
    
        int t, f = 0;
        cin >> t;
        while(t--)
        {
            //f = 0;
            cin >> n;
            int i = 2;
            while(i++ <= 3000)
            {
                if(ok(i) == n)
                {
                    f = 1; break;
                }
            }
            printf("%s
    ",f?"no":"yes");
        }
        return 0;
    }
    蒻数据下的无趣暴力
    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    #include<set>
    #include<map>
    #include<sstream>
    #include<queue>
    #include<cmath>
    #include<list>
    #include<vector>
    #include<string>
    using namespace std;
    #define long long ll
    const double PI = acos(-1.0);
    const double eps = 1e-6;
    const int inf = 0x3f3f3f3f;
    const int N = 500005;
    int n, m, tot;
    int a[N];
    int mp[N];
    int x, y, pr, pc;
    
    void init()
    {
        for(int i=1; i<=N; i++)
        {
            for(int j=i+i; j<=N; j+=i)
            {
                a[j] += i;
            }
        }
        for(int j=1; j<=N; j++)
        {
            if(a[j] <= 1000) mp[a[j]] = 1; //hash标记
        }
    }
    
    int main()
    {
    
        int t;
        cin >> t;
        init();
        while(t--)
        {
            cin >> n;
            printf("%s
    ",mp[n]?"no":"yes");
        }
        return 0;
    }
    筛法思想-31MS-ojbk
  • 相关阅读:
    Spring-四种常用注解
    Spring-IOC
    Spring-bean 的管理细节
    Android R.java文件
    MySQL | windows10 安装MySQL : 无法将“mysql”项识别为 cmdlet、函数、脚本....
    统计知识 | 决定系数 R方、调整后的R方、F值
    R | R语言表达式中常用的符号
    回归分析 | R语言回归算法、模型诊断
    R | 探索性数据分析 EDA
    R语言基础 | 概率分布的表示方法
  • 原文地址:https://www.cnblogs.com/Roni-i/p/8711924.html
Copyright © 2011-2022 走看看