• 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;
    }
                
                      
                   
                
    



    
    
  • 相关阅读:
    010 排序: 冒泡 选择
    洛谷 P1540 机器翻译
    洛谷 P1011 车站
    周期串
    2019.03.29 大数据图解
    2019.03.29 算法解读
    2019.03.28 博客反省
    2019.03.27 常用的模块
    2019.03.25 git
    2019.03.25 Ajax三级联动
  • 原文地址:https://www.cnblogs.com/csnd/p/12063240.html
Copyright © 2020-2023  润新知