题目描述
K的因子中只包含2 3 5。满足条件的前10个数是:2,3,4,5,6,8,9,10,12,15。
所有这样的K组成了一个序列S,现在给出一个数n,求S中 >= 给定数的最小的数。
例如:n = 13,S中 >= 13的最小的数是15,所以输出15。
输入
第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10000)
第2 - T + 1行:每行1个数N(1 <= N <= 10^18)
输出
共T行,每行1个数,输出>= n的最小的只包含因子2 3 5的数。
样例输入
5
1
8
13
35
77
样例输出
2
8
15
36
80
AC代码
#include <iostream>
using namespace std;
int main() {
int T,n;
cin>>T;
while(T--) {
cin>>n;
int i=n,flag=1,itemp,temp;
if(n==1){
i=2;
flag=0;
}
while(flag) {
itemp=i;
for(int j=2;j<=itemp&&itemp>1;) {
temp=1;
if(itemp%j==0){
if(j!=2&&j!=3&&j!=5) {
i++;
temp=0;
break;
}
itemp=itemp/j;
}else
j++;
}
if(temp)
flag=0;
}
if(T>0)
cout<<i<<endl;
else
cout<<i;
}
return 0;
}