首页 > 代码库 > HDU 4133
HDU 4133
注意题目中的一句话:If a number m has bigger evaluating value than all the numbers smaller than it。。。
这让我重新想过反素数的定义,应该 是比n小的数的约数的个数都 小于 n。所以,应该取最小的一个值
#include <iostream>#include <cstdio>#include <algorithm>#define LL __int64using namespace std;LL n,ans,c;LL p[16]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53};void solve(LL dep, LL tmp, LL num){ if(tmp>n) return ; if(num>c||(num==c&&tmp<ans)){ ans=tmp; c=num; }// cout<<tmp<<endl; for(LL i=1;i<=60;i++){ if(tmp*p[dep]>n) break; solve(dep+1,tmp*p[dep],num*(i+1)); tmp*=p[dep]; }}int main(){ int t,kase=0; scanf("%d",&t); while(t--){ scanf("%I64d",&n); ans=-1; c=0; solve(0,1,1); printf("Case #%d: %I64d\n",++kase,ans); } return 0;}
HDU 4133
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。