1. 程式人生 > >BZOJ1053_反素數_KEY

BZOJ1053_反素數_KEY

def ret prim style sca == 一個 .com mem

題目傳送門

初看這道題,以為是一道挺難的題目,但仔細看發現,不是只要爆搜就好了嗎?

只需要對前12個素數進行爆搜即可。

一個數的因數個數=素數次數+1全部乘起來。

code:

/************************************************************** 
    Problem: 1053 
    User: yekehe 
    Language: C++ 
    Result: Accepted 
    Time:12 ms 
    Memory:820 kb 
***************************************************************
*/ #include <cstdio> #define ll long long using namespace std; int N,ans=1,cnt=1; int prime[15]={1,2,3,5,7,11,13,17,19,23,29,31,37}; void so(int x,ll tot,int yzgs,int last){ if(x==12){ if(tot>ans&&yzgs>cnt)ans=tot,cnt=yzgs; if(tot<=ans&&yzgs>=cnt)ans=tot,cnt=yzgs;
return ; } int t=1; for(int i=0;i<=last;i++){ so(x+1,tot*t,yzgs*(i+1),i); t*=prime[x]; if(tot*t>N)break; } return ; } int main(){ scanf("%d",&N); so(1,1,1,20); printf("%d",ans); return 0; }

BZOJ1053_反素數_KEY