[BZOJ 1053] [HAOI2007]反素数ant 数论+搜索

题目大意:求最大反质数


题解见黄学长:题解

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
 
int p[12]={1,2,3,5,7,11,13,17,19,23,29,31},ans(1),n,sum(1);
 
int Dfs(int k,long long num,int cnt,int e) {
    if(k==12) {
        if(num>ans&&cnt>sum) {
            ans=num;
            sum=cnt;    
        }
        if(num<=ans&&cnt>=sum) {
            ans=num;
            sum=cnt;    
        }   
        return 1;
    }
    long long t=1;
    for(int i=0;i<=e;i++) {
        Dfs(k+1,num*t,cnt*(i+1),i);
        t*=p[k];
        if(num*t>n) break;
    }
}
int main() {
    cin>>n;
    Dfs(1,1,1,20);
    cout<<ans;
}



版权声明:本文为u013630329原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。