51nod 1010 只包含因子2 3 5的数

来源:互联网 发布:游族网络股票诊断 编辑:程序博客网 时间:2024/06/02 07:30

题目链接: 

http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1010

题解:

简单题,只要打表加二分,虽然自己的表打错了,结果错了半天。

代码:

#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define met(a,b) memset(a,b,sizeof(a))#define inf 0x3f3f3f3ftypedef long long ll;const ll maxn = 1e18;ll num[50086];ll len;void init(){    len=0;    for(ll i=1;i<=maxn;i*=2)        for(ll  j=1;i*j<=maxn;j*=3)            for(ll k=1;i*j*k<=maxn;k*=5)            {                ll ans=i*j*k;                num[len++]=ans;            }    sort(num,num+len);}int main(){    init();    ll t;    cin>>t;    while(t--)    {        ll n;        cin>>n;        ll left=1,right=len,mid=0;        while(left<right)        {            mid=(left+right)>>1;            if(num[mid]>=n)                right=mid;            else                left=mid+1;        }        cout<<num[left]<<endl;    }}


0 0
原创粉丝点击