#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
long long d[]={3,4,5,6};
long long n;
int main()
{
int T;
scanf("%d",&T);
for(int Case=1;Case<=T;Case++)
{
scanf("%I64d",&n);
if(n==3||n==4||n==5||n==6)
{
printf("Case #%d: -1\n",Case);
continue;
}
long long ans=0;
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(n-d[i]>0)
if((n-d[i])%d[j]==0)
{
long long p=(n-d[i])/d[j];
if(p>max(d[i],d[j]))
ans++;
}
}
}
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
for(int k=0;k<4;k++)
{
long long a=d[k];
long long b=d[j];
long long c=d[i]-n;
long long t=b*b-4*a*c;
if(t>=0)
{
long long st=(long long )sqrt(t+0.5);
if(st*st==t)
{
if(-b+st>0)
if((-b+st)%(2*a)==0)
{
long long sd=((-b+st)/(2*a));
if((sd>max(d[i],max(d[j],d[k]))))
ans++;
}
}
}
}
for(long long base=4;base*base*base<=n;base++)
{
long long t=n;
int flag=0;
while(t)
{
long long r=t%base;
if(r<3||r>6)
{
flag=1;
break;
}
t=t/base;
}
if(flag)
continue;
else
ans++;
}
printf("Case #%d: %I64d\n",Case,ans);
}
}
hdu 4937
最新推荐文章于 2014-08-23 15:00:44 发布