计蒜客 难题题库 030 合法分数的组合
2015-08-10 09:19
295 查看
379次
尝试次数
13.9%
1000ms
65536K
输入一个自然数N,我们总可以得到一些满足“1≤b≤N,0≤a/b≤1”条件的最简分数a/b(分子和分母互质的分数),请找出所有满足条件的分数。
比方说,当N=5时,所有解为:
0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1/1
现在,你需要对于一个给定的自然数N,1≤N≤160,请编程按分数值递增的顺序输出所有解。
注:0和任意自然数的最大公约数就是那个自然数、互质指最大公约数等于1的两个自然数。
输入包括一个给个给定的自然数N
输出为一个列表,每个分数单独占一行,按照实际大小从小到大排列
输出:
尝试次数
13.9%
1000ms
65536K
输入一个自然数N,我们总可以得到一些满足“1≤b≤N,0≤a/b≤1”条件的最简分数a/b(分子和分母互质的分数),请找出所有满足条件的分数。
比方说,当N=5时,所有解为:
0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1/1
现在,你需要对于一个给定的自然数N,1≤N≤160,请编程按分数值递增的顺序输出所有解。
注:0和任意自然数的最大公约数就是那个自然数、互质指最大公约数等于1的两个自然数。
输入包括一个给个给定的自然数N
输出为一个列表,每个分数单独占一行,按照实际大小从小到大排列
样例1
输入:5
输出:
0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1/1
#include<iostream> #include<set> using namespace std; class node{ public: int a, b; double c; node(int i, int j) : a(i), b(j), c((double(a) / b)){} bool operator<(const node &n2) const{ return c < n2.c; } }; int main(){ int n, i, j; set<node> si; cin >> n; for(i = 1; i <= n; ++i){ for(j = 0; j <= i; ++j){ si.insert(node(j, i)); } } for(set<node>::iterator it = si.begin(); it != si.end(); ++it){ cout << it->a << "/" << it->b << endl; } }
相关文章推荐
- CSS3实现的一批hover特效
- wpf 代码设置图片路径(后台和xamll)
- 如何用PHPExcel读取超大excel文件
- 移动鼠标显示坐标及退出
- nginx安装
- 线段树之HDU1166 敌兵布阵
- 7大未来Web设计趋势
- 51nod 1413:权势二进制
- swift - The Builder Pattern
- 进程间通信-信号量
- js 浮动窗效果
- jQuery 判断所有图片加载完成
- 51nod 1413:权势二进制
- js利用clipboardData在网页中实现截屏粘贴的功能
- 流程设计器
- 将网页中的html代码的table保存成word文件
- 20年资深程序员编程经验分享
- Web.xml配置详解
- JavaScript高级程序设计笔记 事件冒泡和事件捕获
- ASP.NET MVC4 + Highcharts生成报表