UVA10976 Fractions Again?!
2015-08-28 09:37
375 查看
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
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
根据x与y的关系,推算出y的范围,然后在【k+1,2*k】枚举y值,利用等式推出求解出x然后判断x是否是整数,或者是否能整除
为了提高效率可以将结果保存在数组中,然后输出数组的结果;
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
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
根据x与y的关系,推算出y的范围,然后在【k+1,2*k】枚举y值,利用等式推出求解出x然后判断x是否是整数,或者是否能整除
为了提高效率可以将结果保存在数组中,然后输出数组的结果;
#include <iostream> #include<cstdio> #include<cstring> using namespace std; int main() { int k; while(scanf("%d",&k)!=EOF) { double x; int num=0; for(int i=k+1;i<=2*k;i++) { x=k*i*1.0/(i-k); if((int)x==x && x>=i && x>k) num++; } printf("%d\n",num); for(int i=k+1;i<=2*k;i++) { x=k*i*1.0/(i-k); if((int)x==x && x>=i && x>k) printf("1/%d = 1/%d + 1/%d\n",k,(int)x,i); } } return 0; }
相关文章推荐
- [转]do_select()函数分析,理解select(),poll(),poll_wait()函数的关系
- hdu4393 Throw nails(只用模拟前面500来次,后面根据速度、位置、id值排序即可)
- UVA 12238 Anti-Rhyme Pairs(hash+二分)
- OC:copy 与 retain 的区别
- hdu 4630 No Pain No Game (区间gcd相关x线段树or树状数组)
- odoo(Openerp)如何在字段的on_change方法中动态返回domain
- 浅析cookie-free domain这么回事
- [leetcode] 11.Container With Most Water
- 什么会在main函数之前执行
- hdu 5349 MZL's simple problem 2015 Multi-University Training Contest 5
- 1302 The Snail【模拟】
- HDU 5293(Tree chain problem-树链剖分)
- RAID的简单认识
- WAP2 wifi密码破解具体流程(BT5实现)
- hdu 4393 Throw nails 相同的状态做相同的处理 贪心
- baidu.com自动跳转至www.baidu.com
- wait和sleep
- 责任链模式-- chainResponsibility
- hdu 5336 XYZ and Drops 2015 Multi-University Training Contest 4
- mount挂载失败。 mount failed reason given by server permission denied