zoukankan      html  css  js  c++  java
  • BZOJ 1053 反素数 题解

    题面

    引理1:  1~n中的最大反质数,就是1~n中约数个数最多的数中最小的一个(因为要严格保证g(x)>g(i));

    引理2:1~n中任何数的不同因子不会超过10个,因为他们的乘积大于2,000,000,000;

    引理3:  1~n中任何数的质因子的指数总和不超过30;

    引理4:  x的质因子是连续的若干个最小的质数,并且指数单调递减;

     对于指数的排列我们只要深搜就可以找到方案,对于不同情况判断是否更新答案;

    #include <bits/stdc++.h>
    using namespace std;
    long long n;
    long long ans=99999999999999;
    int a[15]={0,2,3,5,7,11,13,17,19,23,29,31};
    inline long long KSM(long long a,long long b)
    {
        long long res=1;
        while(b){
            if(b&1) res=res*a;
            a=a*a;
            b/=2;
        }
        return res;
    }
    long long cnt=-1;
    inline void dfs(int dep,int now,long long sum,long long num)
    {
        if(sum>n||sum<0){
            return;
        }
        if(num>cnt){
            ans=sum;
            cnt=num;
        }
        else if(num==cnt){
            if(sum<ans) ans=sum;
        }
        if(dep>10){
            return;
        }
        for(register int i=now;i>=1;i--){
            dfs(dep+1,i,sum*KSM(a[dep],i),num*(i+1));
        }
    }
    int main()
    {
        cin>>n;
        dfs(1,32,1,1);
        cout<<ans;
    } 
  • 相关阅读:
    javaweb大文件上传
    java+大文件分段上传
    php文件断点上传
    java+断点续传
    .net断点续传
    PHP检测每一段代码执行时间
    javaScript阻止浏览器F5刷新
    PHP动态修改配置文件
    eval()计算某个字符串,js和jquery都可以使用
    php 访问java接口数据
  • 原文地址:https://www.cnblogs.com/kamimxr/p/11442390.html
Copyright © 2011-2022 走看看