• hdu4282 x^z+y^z+x*y*z=k 解的个数


    题意:
         x^z + y^z + x*y*z = k; (x < y ,z > 1),给你一个k问有多少组解.

    思路:

           暴力枚举z,y,然后二分查找x.注意一点最好用快速幂,别用pow,不然有可能会超时,如果先把z=2的处理了会快一点.应该会0ms.....


    #include<stdio.h>
    
    __int64 quickp(__int64 a,__int64 n)
    {
       __int64 aa=1;
       while(n)
       {
           if(n&1)
           aa*=a;
           a*=a;
           n>>=1;
       }
       return aa;
    }
    
    int main ()
    {
       __int64 x ,y ,z ,i ,j ,k;
       __int64 low ,up ,mid;
       while(~scanf("%I64d" ,&k) && k)
       {
          __int64 sum = 0;
          for(z = 2 ;z <= 31 ;z ++)
          {
             for(y = 2 ;y <= 46341 ;y ++)
             {
                if(quickp(y ,z) > k) break;
                low = 1;
                up = y-1;
                __int64 mk = 0;
                while(low <= up)
                {
                   mid = (low + up) / 2;
                   if(quickp(mid ,z) + quickp(y ,z) + mid*y*z >= k)
                   {
                      up = mid - 1;
                      mk = mid;
                   }
                   else
                   low = mid + 1;
                }
                if(quickp(mk ,z) + quickp(y ,z) + mk*y*z == k)
                sum ++;
             }
          }
          printf("%I64d
    " ,sum);
       }
       return 0;
    }
                
                      
                   
                
    



    
    
  • 相关阅读:
    SQL注入(手工篇)
    sed命令
    交互输入与for语句
    编程原理
    grep与正则表达式
    重定向和管道符
    shell_oneday_历史命令相关
    python_01_初识python
    C# 上传文件
    C# in 参数化处理 (记)
  • 原文地址:https://www.cnblogs.com/csnd/p/12063241.html
Copyright © 2020-2023  润新知