所谓缘分数是指这样一对正整数 a 和 b,其中 a 和它的小弟 a−1 的立方差正好是另一个整数 c 的平方,而 c 正好是 b 和它的小弟 b−1 的平方和。例如 83−73=169=132,而 13=32+22,于是 8 和 3 就是一对缘分数。

给定 a 所在的区间 [m,n],是否存在缘分数?

输入格式:

输入给出区间的两个端点 0<m<n≤25000,其间以空格分隔。

输出格式:

按照 a 从小到大的顺序,每行输出一对缘分数,数字间以空格分隔。如果无解,则输出 No Solution

输入样例 1:

8 200

输出样例 1:

8 3
105 10

输入样例 2:

9 100

输出样例 2:

No Solution

分析:遍历m到n区间中的每一个数a,先判断a和它的小弟a-1的立方差d是不是一个平方数,sqrt(d) * sqrt(d) == d则说明其是一个平方数,然后从1开始枚举这个数是不是另外两个数b和b-1的平方和,如果b和b-1的平方和等于a和a-1的立方差的平方根,则输出a和b,并将flag置为1,如果最后flag都为0,则输出No Solution~
这里用映射map<long long, long long> record记录了每一个数b和b-1的平方和的结果,后续如果有碰到之前计算过的平方和,就直接调用map中的结果,不用再次计算~ 

#include <iostream>
#include <map>
#include <cmath>
using namespace std;
long long m, n, a, b, d, c, flag, temp;
map<long long, long long> record;
int main() {cin >> m >> n;for (a = m; a <= n; a++) {d = a * a * a - (a-1) * (a-1) * (a-1), c = sqrt(d);if (c * c != d) continue;for (long long b = 1; b < c; b++) {if (record.count(b)) temp = record[b];else {temp = b * b + (b - 1) * (b - 1);record[b] = temp;}if (temp == c) {cout << a << ' ' << b << '\n';flag = 1;break;}}}if (!flag) cout << "No Solution";return 0;
}

1103 缘分数 – PAT乙级真题相关推荐

  1. 【PTA】 PAT乙级真题,95题(C++,AC代码)

    PAT乙级真题95题 标号 标题 分数 通过数 提交数 通过率 1001 害死人不偿命的(3n+1)猜想 15 109558 309119 0.35 1002 写出这个数 20 71739 28156 ...

  2. PAT乙级真题1058 || 选择题(详解,C/C++示例,测试点分析)

    [欢迎关注微信公众号:计算机黑科学大全,对话框回复:PAT乙级真题]获取全部真题详解及代码示例 个人博客地址:https://mzwang.top 选择题 题目描述: 批改多选题是比较麻烦的事情,本题 ...

  3. 1085 PAT单位排行 (25分)-PAT乙级真题-C++实现

    1085 PAT单位排行 (25分)-PAT乙级真题-C++实现 题目描述: 每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整 ...

  4. PAT乙级真题1089 || 狼人杀-简单版(详解,C/C++示例,测试点分析)

    [欢迎关注微信公众号:计算机黑科学大全,在对话框回复:PAT乙级真题]获取全部真题详解及代码示例,邀请大家加入PAT算法刷题交流qq群:821388108 个人博客:https://mzwang.to ...

  5. 【Java】PAT乙级真题全记录(三)41到60题

    PAT乙级41到60题练习代码全纪录 1041 考试座位号 1042 字符统计 1043 输出PATest 1044 火星数字 1045 快速排序(1.3.4.5测试点运行超时) 1046 划拳 10 ...

  6. 1051. 复数乘法 (15)-PAT乙级真题

    复数可以写成(A + Bi)的常规形式,其中A是实部,B是虚部,i是虚数单位,满足i2 = -1:也可以写成极坐标下的指数形式(R*e(Pi)),其中R是复数模,P是辐角,i是虚数单位,其等价于三角形 ...

  7. 「PAT乙级真题解析」Basic Level 1033 旧键盘打字 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT乙级BasicLevelPractice 1033 问题分析 题目设定了一个场景: 有 ...

  8. 「PAT乙级真题解析」Basic Level 1072 开学寄语 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT乙级BasicLevelPractice 1072 开学寄语 问题分析 题设要求查找学 ...

  9. 「PAT乙级真题解析」Basic Level 1053 住房空置率 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT乙级BasicLevelPractice 1053 问题分析 题设要求统计符合住房空置 ...

最新文章

  1. MongoDB是个好东西,希望你也会
  2. UIViewAnimationOptions类型与modalTransitionStyle模态样式
  3. 【译】 WebSocket 协议第十二章——使用其他规范中的WebSocket协议
  4. 如何探测浏览器是否开启js功能
  5. Silverlight 应用程序之间在客户端通信
  6. 正则小记 javascript
  7. 461. 汉明距离 golang
  8. oracle之单行函数之子查询
  9. java 图片组合 分解_切分和组合图片(二)
  10. 场强和电阻_电阻定律及其相关问题
  11. CCF 2016-4-4游戏
  12. 关于UTF-8的处理方法心得
  13. 1、反转一个3位整数
  14. php gmssl,golang gmssl编译不过
  15. EasyX---快速入门---(一)基本绘图与文字绘制
  16. java事件溯源_领域事件与事件溯源 - 解道Jdon
  17. 如何增加百度收录量和友好度
  18. linux 没有可用的缓冲区空间不足,由于系统缓冲区空间不足或队列已满,不能执...
  19. Django企业开发实战--by胡阳,学习记录1127
  20. JAVA SE (14)

热门文章

  1. Java程序员学习Rust编程
  2. Navicat for MySQL 12破解
  3. Java项目:ssm教务管理系统
  4. CSS3变形之2D变形
  5. 中断处理优先级与中断相应次序
  6. Gopher Daily (2020.05.02) ʕ◔ϖ◔ʔ
  7. C+实现RSA加密解密
  8. 学习进度总结————王烁130201218
  9. 基于粒子群优化的MPPT控制
  10. JavaAPI操作Hive