解题思路
将1e18之内的所有符合条件的数预处理出来,大概就150000个吧,然后将他们排一个序。
输出的时候枚举答案。。
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#define ll long long
using namespace std;
const ll INF=1e18;
int n;
ll x,t,s,a[10010],v[150010];
int main() {
for(ll i=1; i<=1e18; i*=2) {
for(ll j=1; (i*j)<=1e18; j*=3) {
for(ll k=1; (i*j*k)<=1e18; k*=5) {
if(!(i==1&&j==1&&k==1))
v[++t]=i*j*k;
}
}
}
sort(v+1,v+t+1);
scanf("%d",&n);
for(int i=1; i<=n; i++)
scanf("%lld",&a[i]);
for(int i=1; i<=n; i++) {
for(int j=1; j<=t; j++)
if(v[j]>=a[i]) {
printf("%lld\n",v[j]);
break;
}
}
}