I Count Two Three
原题地址
直接暴力打表,之后二分就行了
#include<bits/stdc++.h>
#define ll long long
#define hh 10000000000
using namespace std;
#define boost ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int main()
{
boost;
ll cao;
vector<ll> ans;
ll a=1,b=1,c=1,d=1;
for(int i=0; i<=12; i++)
{
if(i!=0)
a*=7;
for(int j=0; j<=15; j++)
{
if(j!=0)
b*=5;
else
b=1;
cao = a*b;
if(cao>=hh)
break;
for(int o=0; o<=25; o++)
{
if(o!=0)
c*=3;
else
c=1;
cao =a*b*c;
if(cao>=hh)
break;
for(int k=0; k<=33; k++)
{
if(k!=0)
d*=2;
else
d=1;
cao = a*b*c*d;
if(cao>=hh)
break;
else
ans.push_back(cao);
}
}
}
}
//for(auto it=ans.begin(); it!=ans.end(); it++)
// cout<<*it<<endl;
sort(ans.begin(),ans.end());
ll n;
cin >>n;
while(n--){
ll p ;
cin>>p;
auto iter =lower_bound(ans.begin(),ans.end(),p);
cout<<*iter<<endl;
}
return 0;
}