Description
给出一正整数nn,找到所有质因子分解形式形如且不小于nn的最小的数
Input
第一行一整数表示用例组数,每组用例输入一整数nn
Output
对于每组用例,输出结果
Sample Input
10
1
11
13
123
1234
12345
123456
1234567
12345678
123456789
Sample Output
1
12
14
125
1250
12348
123480
1234800
12348000
123480000
Solution
筛出所有形如2a3b5c7d2a3b5c7d的数,对于每个查询二分搜索得到答案即可
Code
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
#define maxn 1111111
int a[maxn],res;
void init()
{
a[1]=1;
int p2,p3,p5,p7;
p2=p3=p5=p7=1;
for(res=2;a[res-1]<=1000000000;res++)
{
ll temp=min(min(min(a[p2]*2,a[p3]*3),a[p5]*5),a[p7]*7);
a[res]=temp;
if(a[p2]*2==temp)p2++;
if(a[p3]*3==temp)p3++;
if(a[p5]*5==temp)p5++;
if(a[p7]*7==temp)p7++;
}
}
int main()
{
init();
int T,n;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
printf("%d\n",a[lower_bound(a,a+res,n)-a]);
}
return 0;
}