• 20200909 day4 刷题记录


    代码背诵:最大公约数,exgcd,KMP,线段树

    1 线段树

    区间求和 区间修改 带lazy标记

    2 1016 完美数

    题意

    定义:完美数(K)满足:(K)的所有不包含自己的因数({p_i}(iin [1,x]))满足

    [K=sum_{i=1}^x p_i ]

    则叫做完美数。
    实际上所有的完美数都是偶数。欧几里得证明一个偶数如果满足以下形式就是完美数:

    [K=2^{p-1}(2^p-1) ]

    其中(p)(2^p-1)都是质数。
    欧拉证明了欧几里得定理的逆定理,每个偶数完美数都是欧几里得形式。
    前四个完美数是6,28,396,8128.相应的(p=2,3,5,7)
    给定一些整数(p),不一定是质数.请你判断满足欧几里得形式的数对应的是不是完美数。
    不超过(2^{33})

    题解

    分别判断(p)(2^p-1)是否是质数。使用快速幂和素数判断。

    未AC原因

    题目理解有误。可以不必判断质因数分解,而直接考虑素数的问题。

    代码

    #include <cstdio>
    #include <cmath>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    int p;
    int ksm(int x,int y)
    {
    if (y == 1) return x;
    int tp = ksm(x,y >> 1);
    if (y & 1) return tp * tp * x;
    return tp * tp;
    }
    int main()
    {
    scanf("%d",&p);
    if (p == 1)
    {
    printf("No
    ");
    return 0;
    }
    int xz = sqrt(p);
    for (int i = 2;i <= xz;i++)
    {
    if (p % i == 0)
    {
    printf("No
    ");
    return 0;
    }
    }
    int itp = ksm(2,p) - 1;
    xz = sqrt(ksm(2,p) - 1);
    for (int i = 2;i <= xz;i++)
    {
    if (itp % i == 0)
    {
    printf("No
    ");
    return 0;
    }
    }
    printf("Yes
    ");
    return 0;
    } 
    

    3 1019

    题意

    找到一个有(n)个因子的最小的正整数。输出。

    题解

    因为最终答案是小于50000的,所以我们可以从2开始枚举答案,遇到第一个有n个因子的数就输出即可。

    理解

    枚举没有考虑

    代码

    
    #include <cstdio>
    #include <cmath>
    
    using namespace std;
    
    int main()
    {
    int n;
    scanf("%d", &n);
    if (n == 1) // 1特判一下。
    {
    printf("1");
    return 0;
    }
    for (int i = 2; i <= 50000; i++)
    {
    int cnt = 0;
    for (int j = 2; j * j < i; j++)
    {
    if (i % j == 0)
    {
    cnt++;
    }
    }
    cnt <<= 1;
    if ((int)sqrt(i) * (int)sqrt(i) == i)
    {
    cnt += 3;
    }
    else
    {
    cnt += 2;
    }
    if (cnt == n)
    {
    printf("%d", i);
    return 0;
    }
    }
    return 0;
    } 
    
    要做就做南波万
  • 相关阅读:
    js遍历删除对象的key
    MYBATIS XML SQL 结果为MAP类型时,KEY为大小问题解决
    Ubuntu SSH 失败
    Navicat 连接 Oracle Docker容器镜像报错:TNS:listener: all appropriate instances are blocking new connections
    Mybatis 定义 Oracle 存储过程,并获取存储输出字符串信息
    python基础之---else(十)
    python基础之---循环简介(九)
    python基础之---条件语句(八)
    python基础之---运算符(七)
    python基础之---转换数据类型(六)
  • 原文地址:https://www.cnblogs.com/liuziwen0224/p/20200909day4-001.html
Copyright © 2020-2023  润新知