HDU 5878 I Count Two Three (打表+二分查找) -2016 ICPC 青岛赛区网络赛

时间:2023-03-09 00:05:54
HDU 5878 I Count Two Three (打表+二分查找) -2016 ICPC 青岛赛区网络赛

题目链接

题意:给定一个数n,求大于n的第一个只包含2357四个因子的数(但是不能不包含其中任意一种),求这个数。

题解:打表+二分即可。

#include <iostream>
#include <math.h>
#include <stdio.h>
#include<algorithm>
using namespace std;
long long data[],tot=;
int main()
{
long long maxn = ;
long long a,b,c,d;
for(a=;a<=maxn;a*=)
for(b=;a*b<=maxn;b*=)
for(c=;a*b*c<=maxn;c*=)
for(d=;a*b*c*d<=maxn;d*=){
data[tot++] = a*b*c*d;
}
sort(data,data+tot); int t,n;
scanf("%d",&t);
while(t--) {
scanf("%d",&n);
int pos = lower_bound(data,data+tot,n)-data;
printf("%lld\n",data[pos]);
}
return ;
}