励志用尽量少的代码做高效表达


Problem describe

It is easy to see that for every fraction in the form 1/k(k > 0), we can always find two positive integers x and y, x ≥ y, such that:1/k=1/x+1/y1/k=1/x+1/y1/k=1/x+1/y

Now our question is: can you write a program that counts how many such
pairs of x and y there are for any given k?

Input

Input contains no more than 100 lines, each giving a value of k(0 < k ≤ 10000).

Output

For each k, output the number of corresponding (x, y) pairs, followed by a sorted list of the > values of x and y, as shown in the sample output.

Sample Input

2
12

Sample Output

2
1/2 = 1/6 + 1/3
1/2 = 1/4 + 1/4
8
1/12 = 1/156 + 1/13
1/12 = 1/84 + 1/14
1/12 = 1/60 + 1/15
1/12 = 1/48 + 1/16
1/12 = 1/36 + 1/18
1/12 = 1/30 + 1/20
1/12 = 1/28 + 1/21
1/12 = 1/24 + 1/24


题目(提交)链接——>UVa-10976


心路历程

题目不难理解,比较难的是如何更好的A掉,最近在备考蓝桥杯,因此十分注重对暴力枚举的理解和优化。

当n=9999时,暴力枚举显然可能超限,因此放弃。

观察样例时发现,由于有x>=y的规定,因此y的最大值只能是n/2。而y的最小只能取到n+1。这样,y的范围就出来了,接下来考虑x。

我们发现,如果y等于一个不合适的数,显然x增大到无限大也没办法得出解,因此得设法固定住x。

于是我将x设为未知数。很容易列出方程:
1/n=1/y+1/x1/n = 1/y + 1/x 1/n=1/y+1/x
化简后得:
n∗y=(y−n)∗xn*y=(y-n)*xn∗y=(y−n)∗x
其中y、n已知,不难得出,x=(n*y)/(y-n)。

在y的遍历过程中,若x为整数,则说明有解,直接输出即可。

在编写代码过程中,我使用了两个动态数组vector,求长度、动态存储等更方便一些。


代码展示:

#include<bits/stdc++.h>
using namespace std;
int main() {int n; while(scanf("%d", &n) != EOF) {vector<int>v1, v2;               //分别存储分子和分母 v1.clear(); v2.clear(); for(int i = n*2; i > n; i--) if((i*n)%(i-n)==0) {v1.push_back(i); v2.push_back((i*n)/(i-n));   } //输出 int len = v1.size();printf("%d\n", len);for(int i=(len-1); i>=0; i--) printf("1/%d = 1/%d + 1/%d\n", n, v2[i], v1[i]); }
return 0; }

总结:

数学是编程中非常重要的一环,虽然编程题中直接涉及的数学知识不算很多,但灵活的应用数学思想,绝对会使编程水平有质的提高。


如果这篇文章对你产生了帮助,就请给博主一个小小的赞吧!大家的点赞是我创作的最大动力!

16行代码AC——紫书| 例题7-3 Fractions Again?! (UVA - 10976)_时间复杂度O(n)相关推荐

  1. 16行代码AC——例题6-4破损的键盘(Broken Keyboard,UVa 11988)——解题报告

    励志用尽量少的代码做高效的表达. 题目(提交)链接→UVa-11988 题目大意: 输入一个字符串,输出在原本应该是怎么样的? 具体方法是: 若读取到'[', 则执行Home键:将光标移到行首. 若读 ...

  2. 解题报告+优化——试题 基础练习 矩形面积交——16行代码AC

    励志用少的代码做高效的表达. 心路历程: 第一阶段: 最初想独立AC出这题来着,但考虑来考虑去,总觉得没想到点子上,缺点什么似的.于是搜网,果不其然,是一种全新的算法"线段交".当 ...

  3. 1036 跟奥巴马一起编程 (15分)——16行代码AC

    立志用更少的代码做更高效的表达 PAT乙级最优题解-->传送门 美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014 年底,为庆祝&qu ...

  4. (~解题报告~)L1-017 到底有多二 (15分)(16行代码AC)

    立志用更少的代码做更高效的表达 一个整数"犯二的程度"定义为该数字中包含2的个数与其位数的比值.如果这个数是负数,则程度增加0.5倍:如果还是个偶数,则再增加1倍.例如数字-131 ...

  5. 解题报告——蓝桥杯 试题 基础练习 字符串对比——16行代码AC

    励志用尽量少的代码做高效的表达 储备知识: 1.转化字母大小写→cctype头文件函数详解 注意点: 1.本题按要求4个if语句层层嵌套,一定要做到清晰.易懂,才能快速解题. 3.判断第三点时,用#i ...

  6. 蓝桥杯 试题 基础练习 特殊回文数——16行代码AC

    都开始做蓝桥杯了,展示那复杂的算法技巧干啥啊? 暴力它不香吗? 不动脑它不香吗? 这代码她不美吗? 储备知识: set容器用法→set头文件函数详解 注意点: 1.我们知道数的位数(5.6),也知道都 ...

  7. python爬虫代码1000行-Python爬虫教程(16行代码爬百度)

    最近在学习python,不过有一个正则表达式一直搞不懂,自己直接使用最笨的方法写出了一个百度爬虫,只有短短16行代码. 首先安装必背包: pip3 install bs4 pip3 install r ...

  8. 12行代码AC——L1-058 6翻了(15分)

    立志用更少的代码做更高效的表达 "666"是一种网络用语,大概是表示某人很厉害.我们很佩服的意思.最近又衍生出另一个数字"9",意思是"6翻了&quo ...

  9. 15行代码AC——ZOJ - 4118 Stones in the Bucket(思维题+优化方案)(第十届山东省ACM程序设计竞赛F题)

    励志用少的代码做高效表达. 思路分析 题意:给定n个数,问最少操作几次,使数列中的数全部相等. 操作一:将数列中任意数减一. 操作二:将数列中任意数减一.任意数加一(相当于把1挪过去) 涉及到最少的题 ...

最新文章

  1. MetagenoNets:在线宏基因组网络分析实操教程
  2. HDU 2955 Robberies
  3. 文件 numpy_通过 Kaggle 入门 NumPyamp;Panda
  4. Android中JNI的使用方法
  5. IBM、甲骨文、CNCF 就谷歌对 Istio 治理的处理提出抗议
  6. Android之实现多桌面图标app入口进入不同的页面,像2个独立运行的app一样,互不干扰。
  7. hdu6356-Glad You Came【RMQ】
  8. bzoj 1607: [Usaco2008 Dec]Patting Heads 轻拍牛头
  9. html上传文件是否合法,java 在前端页面上传图片文件,验证是否为合法的图片
  10. VEGA:诺亚AutoML高性能开源算法集简介
  11. 新东方年会吐槽视频《释放自我2.0》又来了!不过这次俞敏洪没说发奖金...
  12. 提醒:使用过期Win10预览版后果很严重
  13. win10下安装deepin双系统教程
  14. 树莓派做网络代理_【树莓派】设置代理服务器联网
  15. 计算机cpu风扇不转怎么办,如果计算机启动时cpu风扇不旋转,该怎么办?解决方法[详细说明]...
  16. 【P4lang】什么是P4?
  17. 专业测评:iphone7致命缺陷曝光
  18. python图片镜像翻转_python图像处理之镜像实现方法
  19. 结构图的分类--产品功能结构图、产品信息结构图、产品结构图
  20. excel中html批量转化为pdf文件,如何将大量的Excel转换成PDF?

热门文章

  1. 贝壳app Authorization参数分析
  2. 搞懂这些SQL优化技巧,面试横着走
  3. Apache Kafka 不需要管理员:删除 Apache ZooKeeper 的依赖
  4. 再见了微服务!全面拥抱 DDD 真正的价值
  5. Django环境搭建
  6. 你会在你的WebRTC 应用程序中使用哪种视频编解码器呢?
  7. 【全链路质量监控与QoE】
  8. 网易云信流媒体服务端架构设计与实现
  9. 深度学习赋能视频编码
  10. LiveVideoStack线上分享第三季(九):《街舞》《长安十二时辰》背后的文娱大脑...