Uva - 10976 - Fractions Again?!
来源:互联网 发布:管螺纹怎么编程 编辑:程序博客网 时间:2024/05/14 20:29
It is easy to see that for every fraction in the form (k > 0), we can always find two positive integers x and y, x ≥ y, such that:
.
Now our question is: can you write a program that counts how many such pairs of x andy 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
212
Sample Output
21/2 = 1/6 + 1/31/2 = 1/4 + 1/481/12 = 1/156 + 1/131/12 = 1/84 + 1/141/12 = 1/60 + 1/151/12 = 1/48 + 1/161/12 = 1/36 + 1/181/12 = 1/30 + 1/201/12 = 1/28 + 1/211/12 = 1/24 + 1/24
遍历y,y的取值是从k+1到2k,每次判断 y * k % (y - k)是否是0,就是判断k之分一减去y分之一能否约分成分子为1的分数,结果用队列存放。
AC代码:
#include <iostream>#include <cstdio>#include <cstdlib>#include <cctype>#include <cstring>#include <string>#include <sstream>#include <vector>#include <set>#include <map>#include <algorithm>#include <stack>#include <queue>#include <bitset> #include <cassert> using namespace std;queue<pair<int, int> > ans;int main(){int k;while (cin >> k && k) {int cnt = 0;for (int i = k + 1; i <= 2 * k; i++) {long long pro = (long long)i * k;int minus = i - k;if (pro % minus == 0) { // 是否能约分成分子是1的分数ans.push(pair<int, int>(pro / minus, i));cnt++;}}printf("%d\n", cnt);for (int i = 0; i < cnt; i++) {printf("1/%d = 1/%d + 1/%d\n", k, ans.front().first, ans.front().second);ans.pop(); // 全部输入就刚好清空了}}return 0;}
0 0
- UVA 10976 - Fractions Again?!
- UVA 10976 - Fractions Again?!
- UVA-10976 - Fractions Again?!
- UVA - 10976 Fractions Again?!
- UVa 10976 - Fractions Again?!
- UVa 10976 - Fractions Again?!
- UVa 10976 - Fractions Again?!
- UVA - 10976 Fractions Again?!
- uva 10976 - Fractions Again?!
- UVa 10976 Fractions Again?!
- Uva - 10976 - Fractions Again?!
- UVA - 10976 Fractions Again?!
- uva 10976Fractions Again?!
- UVA 10976 - Fractions Again?!
- UVA 10976 Fractions Again?!
- UVA 10976 Fractions Again?!
- UVa 10976 Fractions Again?
- UVa 10976 Fractions Again?!
- 【Java基础】——IO流(下)
- 分析2005及以上数据库变慢的原因
- 程序员福利---免费接口
- 每天一个linux命令(49):at命令
- 【Java基础】——正则表达式
- Uva - 10976 - Fractions Again?!
- Strust2遍历实体
- 【Java高新技术】——反射
- matlab如何控制坐标轴显示内容,而不改变曲线形状
- 手动修改注册表,达到键盘改键的效果
- HDOJ 1302 The Snail(水题)
- 软件开发须知
- UVa 10305 - Ordering Tasks【拓扑排序】
- ibatis 使用文档