首页 > 代码库 > hdu_5878_I Count Two Three(预处理)
hdu_5878_I Count Two Three(预处理)
题目链接:hdu_5878_I Count Two Three
题意:
给你一个n,让你找满足那个式子的不比n小的最小数
题解:
先上个预处理,然后二分查找就行
1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;i++) 3 using namespace std; 4 typedef long long ll; 5 ll dt[100000],ed; 6 7 ll pow_(ll a,ll k) 8 { 9 ll an=1;10 while(k){if(k&1)an*=a;k>>=1,a*=a;}11 return an;12 }13 14 int main()15 {16 ll a,b,c,d;17 F(i,0,40)18 {19 a=pow_(2,i);20 if(a>1e9)continue;21 F(j,0,40)22 {23 b=pow_(3,j);24 if(b>1e9||a*b>1e9)continue;25 F(k,0,40)26 {27 c=pow_(5,k);28 if(c>1e9||a*b*c>1e9)continue;29 F(l,0,40)30 {31 d=pow_(7,l);32 if(d>1e9||a*b*c*d>1e9)continue;33 dt[++ed]=a*b*c*d;34 }35 }36 }37 }38 sort(dt+1,dt+1+ed);39 int t,n;40 scanf("%d",&t);41 while(t--)scanf("%d",&n),printf("%lld\n",dt[lower_bound(dt+1,dt+1+ed,n)-dt]);42 return 0;43 }
hdu_5878_I Count Two Three(预处理)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。