问题 G: 我数23
时间限制: 1 Sec 内存限制: 128 MB
提交: 125 解决: 13
[提交][状态][讨论版][命题人: 外部导入]
题目描述
给你一个数字n,找出大于等于n的最小的,质因数只有2,3,5,7的数。
输入
第一行输入一个数字T,表示有T组测试数据,1 <= T <= 500000
之后T行,每一行有一个数字n,0 <= n <= 109
输出
对每个样例,皆输出一个数字表示答案。
样例输入
5
1
11
111
1111
11111
样例输出
210
210
210
1260
11340
#include <bits/stdc++.h>
using namespace std;
const int a[5]={2,3,5,7};
set<long long> sss;
priority_queue<long long,vector<long long>,greater<long long> >qqq;
int main()
{
qqq.push(210);
sss.insert(210);
for(int i=1;i<=5130;i++)
{
long long x,y;
x=qqq.top();qqq.pop();
for(int j=0;j<4;j++)
{
y=x*a[j];
if(!sss.count(y))
{
sss.insert(y);
qqq.push(y);
}
}
}
int T;
scanf("%d",&T);
while(T--)
{
long long n;
scanf("%lld",&n);
printf("%lld\n",*sss.lower_bound(n));
}
return 0;
}