当前位置: 代码迷 >> 综合 >> 51Nod 1010 只包含因子2 3 5的数(打表+二分)
  详细解决方案

51Nod 1010 只包含因子2 3 5的数(打表+二分)

热度:110   发布时间:2023-11-08 15:28:55.0

分析:
打表+二分

#include <iostream>
#include<algorithm>
#include<cmath>
#define maxn 1e18+99
typedef long long ll;
using namespace std;
ll T,x,l,r,mid,cnt;
ll a[50010];
void init(){cnt=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){a[cnt++]=i*j*k;}}}
}int main(){std::ios::sync_with_stdio(false);init();sort(a,a+cnt);cin>>T;while(T--){cin>>x;l=1;r=cnt;while(l<=r){mid=(l+r)/2;if(a[mid]>=x){r=mid-1;}else {l=mid+1;}}cout<<a[l]<<endl;}return 0;
}