#include<stdio.h>
#include<math.h>
__int64 Pow(__int64 k,int z )
{
__int64 ans=k;
int i;
for(i=2;i<=z;i++)
ans*=k;
return ans;
}
int main()
{
int n;
while(scanf("%d",&n) !=EOF)
{
if(n==0) break;
/*printf("%lld\n",Pow(2,n));**/
int ans=0;
int temp=sqrt(1.0*n);
if(temp*temp==n)
ans+=(temp-1)>>1;
for(int z=3;z<31;z++){
for(__int64 x=1;;x++)
{
__int64 u=Pow(x,z);
if(u>=n/2)
break;
for(__int64 y=x+1;;y++)
{
__int64 v=Pow(y,z);
if(u+v+x*y*z>n)
break;
else if(u+v+x*y*z==n)
{
ans++;
break;
}
}
}
}
printf("%d\n",ans);
}
return 0;
}
杭电 4282
最新推荐文章于 2021-02-22 14:35:11 发布
596

被折叠的 条评论
为什么被折叠?



