码迷,mamicode.com
首页 > 其他好文 > 详细

hdu_5878_I Count Two Three(预处理)

时间:2016-09-20 19:42:21      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

题目链接: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 }
View Code

 

hdu_5878_I Count Two Three(预处理)

标签:

原文地址:http://www.cnblogs.com/bin-gege/p/5890022.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!