Section 2.1 frac1
来源:互联网 发布:数据新闻啥意思 编辑:程序博客网 时间:2024/06/07 16:57
题目大意
输入一个自然数N,对于一个最简分数a/b(分子和分母互质的分数),满足1<=b<=N,0<=a/b<=1,请找出所有满足条件的分数。 例如当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的两个自然数。
输入格式
line 1:N(1<N<160)
输出格式
每个分数单独占一行,按照大小次序排列
样例输入
5
样例输出
0/1 1/5 1/4 1/3 2/51/23/52/33/44/51/1
题解
比较水的一题,判断最大公因数是否为1即可。判断的时候避免受double的精度影响,变换成整数比较大小比较好。
代码
#include<stdio.h>int gcd(int a,int b){ int i,j,r; if(a==0) return b; if(b==0) return a; if(a>b) { i=a; j=b; } else { i=b; j=a; } do { r=i%j; i=j; j=r; }while(r!=0); return i;}int main(){ int N; int i,j,k=0,t; int a[20000][2]={0}; double b[20000]={0}; scanf("%d",&N); for(i=0;i<=N;i++) for(j=i;j<=N;j++) { if(gcd(i,j)==1) { double p,q; p=i; q=j; b[k]=p/q; a[k][0]=i; a[k][1]=j; k++; } } for(i=0;i<k;i++) for(j=0;j<k-i-1;j++) { if(b[j]>b[j+1]) { double h; h=b[j]; b[j]=b[j+1]; b[j+1]=h; t=a[j][0]; a[j][0]=a[j+1][0]; a[j+1][0]=t; t=a[j][1]; a[j][1]=a[j+1][1]; a[j+1][1]=t; } } for(i=0;i<k;i++) { printf("%d/%d\n",a[i][0],a[i][1]); } return 0;}
阅读全文
0 0
- Section 2.1 frac1
- 2.1 frac1
- usaco 2.1.2 frac1
- USACO 2.1 frac1
- USACO 2.1 frac1
- USACO 2.1 Ordered Fractions (frac1)
- usaco 2.1 frac1 2008.5.10
- USACO:frac1
- usaco frac1
- usaco frac1
- usaco——frac1
- USACO frac1直接排序
- Section 2.1 The Castle
- Section 2.1 Ordered Fractions
- Section 2.1 Healthy Holsteins
- Section 2.1 Hamming Codes
- USACO Section 2.1 题解
- SICP Section 2.1.3
- Java实现定时任务的三种方法
- day04数组 知识点和核心代码以及作业
- JavaEE应用的分层简介
- js全选
- POJ 1182 食物链(并查集)
- Section 2.1 frac1
- poj3349Snowflake Snow Snowflakes(哈希表)
- 剑指offer面试题-判断链表是否带环并求环的入口点和环的长度
- 音频
- LeetCode#21 Merge Two Sorted Lists
- zabbix 的安装
- scikit-learn对天气数据进行回归分析
- mapbox for unity 再现真实地图
- [USACO1.1]Broken Necklace C++(错误1)