#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define ll long long
using namespace std;
ll k;
bool work(ll z,ll y,ll yz)
{
ll l=1,r=y-1,i,j,mid;
while(l<=r)
{
mid=(l+r)>>1;
ll dd=1;
for(i=0;i<z;i++)
dd*=mid;
dd=dd+mid*y*z;
if(dd==yz)
return 1;
else
if(dd<yz)
l=mid+1;
else
r=mid-1;
}
return 0;
}
int main()
{
ll i,j,n,m,yz,f,ans,z,y,x;
while(scanf("%I64d",&k)!=EOF)
{
if(k==0)
break;
ans=0;
ll p=4;
for(z=2;p<k;p*=2,z++)
{
for(y=2;;y++)
{
f=0;
yz=1;
for(i=0;i<z;i++)
{
yz*=y;
if(yz>k)
{
f=1;
break;
}
}
if(f==1)
break;
if(work(z,y,k-yz))
ans++;
}
}
printf("%I64d\n",ans);
}
return 0;
}
hdu 4282
最新推荐文章于 2017-10-18 13:45:38 发布