E - A very hard mathematic problem

时限:1000MS     内存:32768KB     64位IO格式:%I64d & %I64u

问题描述

Haoren is very good at solving mathematic problems. Today he is working a problem like this: 
  Find three positive integers X, Y and Z (X < Y, Z > 1) that holds 
   X^Z + Y^Z + XYZ = K 
  where K is another given integer. 
  Here the operator “^” means power, e.g., 2^3 = 2 * 2 * 2. 
  Finding a solution is quite easy to Haoren. Now he wants to challenge more: What’s the total number of different solutions? 
  Surprisingly, he is unable to solve this one. It seems that it’s really a very hard mathematic problem. 
  Now, it’s your turn. 

输入

There are multiple test cases. 
  For each case, there is only one integer K (0 < K < 2^31) in a line. 
  K = 0 implies the end of input. 
   

输出

Output the total number of solutions in a line for each test case. 

样例输入

9 53 6 0

样例输出

1 1 0

提示

 9 = 1^2 + 2^2 + 1 * 2 * 2 53 = 2^3 + 3^3 + 2 * 3 * 3 

分析:哎!老是TLE,这道题把我搞崩溃了。二分搜索,把z放在最外层可以计算出最大的x的值,优化计算。枚举x和z值,二分搜索y值。注意:当y值取最小值的时候大于k值,或者当y取最大值时小于k值时,直接跳过。我就是TLE这里,呜呜····。

CODE:

#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;int main()
{int k,maxn;while(scanf("%d",&k)&&k!=0){int ans=0;for(int z=2;z<31;z++){maxn=pow((double)k,1.0/z);for(int x=1;x<=maxn;x++){int l=x+1,r=maxn;if(pow(x,z)+pow(l,z)+x*l*z>k||pow(x,z)+pow(r,z)+x*r*z<k)continue;while(l<=r){int mid=(l+r)/2;long long res=pow(x,z)+pow(mid,z)+x*mid*z;if(res==k){ans++;break;}else if(res<k)l=mid+1;elser=mid-1;}}}printf("%d\n",ans);}return 0;
}

E - A very hard mathematic problem----(2015 summer training #3)相关推荐

  1. 我与计算机编程的不解之缘(2015.9~2022.1)

    不解之缘:不能分开的缘分,指难以解除的密切关系. 虽然在计算机方面多有涉猎,但是我纯属是业余的,我学的能源与动力工程和材料物理与化学专业和计算机关联也不大.也可能是小小的缘分吧,在计算机应用领域摸爬滚 ...

  2. M - Mediocre String Problem( 扩展KMP + Manacher + 差分 )

    M - Mediocre String Problem( 扩展KMP + Manacher + 差分 ) 题意:给出一个串S,和一个串T. 要求 从S串中取一个子串,后面接上T串的一个前缀 组成一个结 ...

  3. 【我的书】Unity Shader的书 — 文件夹(2015.12.21更新)

    写在前面 感谢全部点进来看的朋友.没错.我眼下打算写一本关于Unity Shader的书. 出书的目的有以下几个: 总结我接触Unity Shader以来的历程,给其它人一个借鉴.我非常明确学Shad ...

  4. 【CF464E】The Classic Problem(主席树+最短路)

    点此看题面 大致题意: 给你一张无向图,每条边的边权为\(2^{x_i}\),求\(s\)到\(t\)的最短路. 最短路 最短路,首先考虑\(Dijkstra\).这里用\(SPFA\)似乎不太好,因 ...

  5. 切题 (problem)(线段树+最大流最小割)

    切题 problem description solution code description 在一个神秘的 JOSLFN 上,wzy 和 lqs2015 常年占据着切题榜的 rk1 和 rk2.现 ...

  6. [新闻摘录]第一届山西省互联网大会(2015.07.03召开)概要

    本文由Markdown语法编辑器编辑完成. http://www.sx.xinhuanet.com/ztjn/hlw.htm 一.山西跑步进入"互联网+"时代 2015年7月3日, ...

  7. 欢迎参加 2015 Autodesk 产品开发培训课程 (2015/8/17开始)

    欢迎参加 2015 Autodesk 产品开发培训课程 尊敬的Autodesk 合作伙伴: 当前互联网及BIM热潮正在席卷中国的建筑工程设计行业,随之而来的是BIM行业的各种设计需求如雨后春笋般涌现, ...

  8. 【转】Node.js最新Web技术栈(2015年5月)

    nodejs是比较简单的,只有你有前端js基础,那就按照我的办法来吧!一周足矣 推荐技术栈 express 4.x (express最新版本,初学者先别去碰koa) mongoose(mongodb) ...

  9. CSU - 2059 Water Problem(Z线分割平面)

    一条'Z'形线可以将平面分为两个区域,那么由N条Z形线所定义的区域的最大个数是多少呢?每条Z形线由两条平行的无限半直线和一条直线段组成 Input 首先输入一个数字T(T<100),代表有T次询 ...

  10. hdu 3549 Flow Problem(最大流模板题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549 Problem Description Network flow is a well-known ...

最新文章

  1. plt转pdf软件_无须转Word也能轻松编辑PDF的软件,它来了!
  2. 基于树的模型的机器学习
  3. 底层系统如何实现数据一致性/系统底层如何保证有序性
  4. mysql密码命名规则_MySql命名规范
  5. QB期刊 | 纪念HGP20周年系列文章3:陈润生院士回顾我国早期生物信息学的发展...
  6. 这些工具类用起来真的很”香“
  7. oracle数据库导出数据6,Oracle数据库导入导出方法汇总
  8. PHP中ob系列函数讲解(浏览器缓存技术)
  9. ssh-add - 向认证代理添加 RSA 或 DSA 身份数据
  10. 无法在驱动器0分区上安装windows 解决方法
  11. matlab求解pde,matlab求解pde问题
  12. visa虚拟卡生成器_虚拟银行卡汇总
  13. centerOS环境变量配置
  14. XJOI一级六段题解(g++,即C++),也可视作C++算法竞赛教程
  15. 【软件测试】时制转换时的电话账单
  16. sd卡与FAT32文件系统
  17. 动态创建iframe页面内容
  18. 基于Unity的C/S架构数据交互
  19. 自定义Win7虚拟机的睡眠时间
  20. react服务端渲染技术

热门文章

  1. 单片机原理及应用(c语言编程),单片机原理及应用——C语言程序设计与实现
  2. 速读原著-TCP/IP(端口映射器)
  3. 制作u盘运行kali linux系统,U盘的进阶用法----打造U盘启动盘+USB KALI Linux+普通U盘。...
  4. 从JDK 6升级到JDK 7过程中遇到的一个问题
  5. weblogic部署springboot项目
  6. Android开发 无线Wifi+WifiUtil工具类,直面秋招
  7. Android 中文 API (29) —— CompoundButton
  8. 怎样保存CAD图纸到电脑桌面呢?
  9. IDEA 集成配置 Jad
  10. attachEvent