HDU 5878(打表)
1462 ワード
題意:
考え方:四層forループ列挙+打表、最後lower_bound().
注意:ここはprintfを使ったほうがいいです.coutでニンニク客にTLEを渡したほうがいいです.なぜcoutと書いたのか分かりません.tie(0)はcoutでまだ遅い.
n
の整数を与え、n
以上の最小整数m
を見つけ、m
を2^a*3^b*5^c*7^d
として表すことができるようにする.考え方:四層forループ列挙+打表、最後lower_bound().
注意:ここはprintfを使ったほうがいいです.coutでニンニク客にTLEを渡したほうがいいです.なぜcoutと書いたのか分かりません.tie(0)はcoutでまだ遅い.
#include
using namespace std;
#define inf 0x3f3f3f3f
#define ll long long
const int maxn=100000000;
const double eps=1e-8;
const double PI = acos(-1.0);
#define lowbit(x) (x&(-x))
ll aa[1001000];
ll qpow(ll x,ll n)
{
ll res=1;
while(n>0)
{
if(n%2==1)
{
res=res*x;
}
x=x*x;
n>>=1;
}
return res;
}
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(0);
std::cout.tie(0);
int t,n,tot=0;
ll temp;
for(int d=0;d<15;d++)
{
ll dv=qpow(7,d);
for(int c=0;c<15;c++)
{
ll cv=qpow(5,c);
for(int b=0;b<30;b++)
{
ll bv=qpow(3,b);
for(int a=0;a<30;a++)
{
ll av=qpow(2,a);
ll temp=dv*cv*bv*av;
// if(c==0&&b==0&&d==1&&a==1)
// cout<<<>t;
sort(aa,aa+tot);
while(t--)
{
cin>>n;
printf("%d
",*lower_bound(aa,aa+tot,n)<