zoukankan      html  css  js  c++  java
  • 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;
    } 
    
    要做就做南波万
  • 相关阅读:
    【URAL 1004】 floyd最小环
    【UVA 10881】 经典模拟题
    【HDU 1541】 树状数组(入门题)
    【HDU 4000】 树状数组
    【HDU 3391 && HDU 4431】 dfs+模拟
    【HDU 1058 & HDU 3199 类似丑数】 简单DP思想
    Acdream原创群赛3(部分题解)
    vfor实现双层循环嵌套
    vue获取当前时间并实时刷新时间
    vue+element ui实现左侧导航栏动态路由跳转
  • 原文地址:https://www.cnblogs.com/liuziwen0224/p/20200909day4-001.html
Copyright © 2011-2022 走看看