您的位置:首页 > 其它

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

2017-11-28 20:49 204 查看


这题想到了打表+二分

结果打表让我玩了半个小时没弄出来

刚开始一直是将求出来的三个数相加(是乘啊啊 啊啊)

然后自己想到的是用pow()。到现在还不知道哪点错了。

换成普通循环,递乘打表成功。。。

#include<iostream>
#include<queue>
#include<vector>
#include<stack>
#include<algorithm>
#include<cmath>
#include<set>
using namespace std;
const long long INF=1e18;
int main(){
int n;
cin>>n;
vector<long long> vec;
for(long long i=1;i<=INF;i*=2){
for(long long j=1;i*j<=INF;j*=3){
for(long long k=1;i*j*k<=INF;k*=5){
vec.push_back(i*j*k);
}
}
}
sort(vec.begin(),vec.end());
while(n--){
long long num;
scanf("%lld",&num);
if(num==1){
printf("2\n");
continue;
}
int index=lower_bound(vec.begin(),vec.end(),num)-vec.begin();
printf("%lld\n",vec[index]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: