hdu4282枚举

来源:互联网 发布:php 知乎 编辑:程序博客网 时间:2024/06/05 16:24


题意:X^Z + Y^Z + XYZ = K,问一共有多少种满足这个条件的x,y,z。

当z=2时,(x+y)^2=k,则有(sqrt(k)-1)/2种方案。

又由于z<=30,故可以使用枚举。

#include <iostream>#include <math.h>using namespace std;long long pow(long long x,int z){    long long tmp=x;    for(int i=2;i<=z;i++)        tmp*=x;    return tmp;}int main(){    int n,tmp,ans;    while(cin>>n,n)    {        ans=0;        tmp=sqrt(n);        if(tmp*tmp==n)            ans+=(tmp-1)/2;        for(int z=3;z<31;z++)        {            for(long long x=1;;x++)            {                long long u=pow(x,z);                if(u>=n/2)  break;                for(long long y=x+1;;y++)                {                    long long v=pow(y,z);                    if(u+v+x*y*z>n) break;                    if(u+v+x*y*z==n)                    {                        ans++;                        break;                    }                }            }        }        cout<<ans<<endl;    }    return 0;}


原创粉丝点击