zoukankan      html  css  js  c++  java
  • 洛谷 P1463 [POI2002][HAOI2007]反素数

    题目描述
    对于任何正整数x,其约数的个数记作g(x)。例如g(1)=1、g(6)=4。

    如果某个正整数x满足:g(x)>g(i) 0

    分析

    利用约数个数公式求答案
    相当于找约数最多的数,个数相同取较小的
    有一点需要注意:分解质因数,较小的数的指数一定大于等于较大的数的指数
    然后,我们发现——我们维护素因子从小到大数量的单调递减性即可
    .
    .
    .
    .
    .

    程序:
    #include<iostream>
    using namespace std;
    long long n,mx,ans,s[100];
    long long prime[14]={0,2,3,5,7,11,13,17,19,23,29,31,37};
    
    void dfs(int x,long long sum,long long h)
    {
        if (x>12)return;
        if (sum>mx||(sum==mx&&h<ans))
        {
            mx=sum;
            ans=h;
        }
        s[x]=0;
        while (h*prime[x]<=n&&s[x]<s[x-1])
        {
            s[x]++;
            h*=prime[x];
            long long w=sum*(s[x]+1);
            dfs(x+1,w,h);
        }
    }
    
    int main()
    {
        cin>>n;
        s[0]=100000;
        dfs(1,1,1);
        cout<<ans;
    }
  • 相关阅读:
    POJ
    POJ
    HDU
    HDU
    HDU
    POJ
    HDU
    POJ
    A-meeting 2019牛客暑期多校第四场 (树的直径)
    算法与数据结构实验题 2.1 塔防
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/10292856.html
Copyright © 2011-2022 走看看