*结构-05. 有理数均值

 1 /*
 2  * Main.c
 3  * F5-结构-05. 有理数均值
 4  *  Created on: 2014年8月26日
 5  *      Author: Boomkeeper
 6  *********部分通过*浮点错误******
 7  */
 8
 9 #include <stdio.h>
10 /**
11  * 有理数结构体
12  */
13 struct rational {
14     int numerator;
15     int denominator;
16 };
17 /**
18  * 最大公约数
19  */
20 int greatCommonDivisor(int m, int n) {
21     int i;
22     for (i = (m < n ? m : n); i > 1; i--) {
23         if (m % i == 0 && n % i == 0)
24             break;
25     }
26     return i;
27 }
28
29 int main(void) {
30
31     int n; //题目中的N
32     struct rational num[101];
33     struct rational result;
34     int i;
35
36     scanf("%d", &n);
37     getchar();
38
39     for (i = 0; i < n; i++) {
40         scanf("%d/%d", &num[i].numerator, &num[i].denominator);
41     }
42
43     result.numerator = num[0].numerator;
44     result.denominator = num[0].denominator;
45
46     //通分求和
47     for (i = 1; i < n; i++) {
48         result.numerator = result.numerator * num[i].denominator
49                 + num[i].numerator * result.denominator;
50         result.denominator = result.denominator * num[i].denominator;
51         if (result.numerator != 0) {
52             //避免累加和超出int范围,每次累加后进行约分
53             int gcd = greatCommonDivisor(result.numerator, result.denominator);
54             result.numerator /= gcd;
55             result.denominator /= gcd;
56         }
57
58     }
59
60     //求平均
61     result.denominator *= n;
62     int gcd = greatCommonDivisor(result.numerator, result.denominator);
63     result.numerator /= gcd;
64     result.denominator /= gcd;
65
66     //输出结果
67     if (result.denominator == 1)
68         printf("%d\n", result.numerator);
69     else
70         printf("%d/%d\n", result.numerator, result.denominator);
71
72     return 0;
73 }

题目链接:

http://pat.zju.edu.cn/contests/basic-programming/%E7%BB%93%E6%9E%84-05

时间: 2024-08-07 02:16:59

*结构-05. 有理数均值的相关文章

结构-05. 有理数均值(20)

本题要求编写程序,计算N个有理数的平均值. 输入格式: 输入第1行给出正整数N(<=100):第2行中按照“a1/b1 a2/b2 ……”的格式给出N个分数形式的有理数,其中分子和分母全是整形范围内的整数:如果是负数,则负号一定出现在最前面. 输出格式: 在一行中按照“a/b”的格式输出N个有理数的平均值.注意必须是该有理数的最简分数形式,若分母为1,则只输出分子. 输入样例1: 4 1/2 1/6 3/6 -5/10 输出样例1: 1/6 输入样例2: 2 4/3 2/3 输出样例2: 1 1

结构-01. 有理数比较

结构-01. 有理数比较(10) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 乔林(清华大学) 本题要求编写程序,比较两个有理数的大小. 输入格式: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数. 输出格式: 在一行中按照“a1/b1 关系符 a2/b2”的格式输出两个有理数的关系.其中“>”表示“大于”,“<”表示“小于”,“=”表示“等于”. 输入样例1:

结构-02. 有理数加法

1 /* 2 * Main.c 3 * F2-结构-02. 有理数加法 4 * Created on: 2014年8月25日 5 ********测试通过********* 6 */ 7 8 #include <stdio.h> 9 /** 10 * 有理数结构体 11 */ 12 struct rationalNumber{ 13 int numerator; 14 int denominator; 15 }; 16 /** 17 * 最大公约数 18 */ 19 int greatComm

5-35 有理数均值 (20分)

本题要求编写程序,计算N个有理数的平均值. 输入格式: 输入第一行给出正整数N(≤100):第二行中按照a1/b1 a2/b2 …的格式给出N个分数形式的有理数,其中分子和分母全是整形范围内的整数:如果是负数,则负号一定出现在最前面. 输出格式: 在一行中按照a/b的格式输出N个有理数的平均值.注意必须是该有理数的最简分数形式,若分母为1,则只输出分子. 输入样例1: 4 1/2 1/6 3/6 -5/10 输出样例1: 1/6 输入样例2: 2 4/3 2/3 输出样例2: 1 #includ

结构-01. 有理数比较(10)

本题要求编写程序,比较两个有理数的大小. 输入格式: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数. 输出格式: 在一行中按照“a1/b1 关系符 a2/b2”的格式输出两个有理数的关系.其中“>”表示“大于”,“<”表示“小于”,“=”表示“等于”. 输入样例1: 1/2 3/4 输出样例1: 1/2 < 3/4 输入样例2: 6/8 3/4 输出样例2: 6/8 = 3/4 #include <stdio.h&g

结构-02. 有理数加法(15)

本题要求编写程序,计算两个有理数的和. 输入格式: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数. 输出格式: 在一行中按照“a/b”的格式输出两个有理数的和.注意必须是该有理数的最简分数形式,若分母为1,则只输出分子. 输入样例1: 1/3 1/6 输出样例1: 1/2 输入样例2: 4/3 2/3 输出样例2: 2 #include <stdio.h> #include <stdlib.h> #include &

结构-01. 有理数比較(10)

本题要求编敲代码,比較两个有理数的大小. 输入格式: 输入在一行中依照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,当中分子和分母全是整形范围内的正整数. 输出格式: 在一行中依照"a1/b1 关系符 a2/b2"的格式输出两个有理数的关系.当中">"表示"大于","<"表示"小于"."="表示"等于". 输入例子1: 1/

基于R语言的数据分析和挖掘方法总结——均值检验

2.1 单组样本均值t检验(One-sample t-test) 2.1.1 方法简介 t检验,又称学生t(student t)检验,是由英国统计学家戈斯特(William Sealy Gosset, 1876-1937)所提出,student则是他的笔名.t检验是一种检验总体均值的统计方法,当数据中仅含单组样本且样本数较大时(通常样本个数≧30的样本可视为样本数较大),可用这种方法来检验总体均值是否大于.小于或等于某一特定数值.当数据中仅含单组样本但样本数较小时(通常样本个数<30的样本可视为

图像检索(2):均值聚类-构建BoF

在图像检索时,通常首先提取图像的局部特征,这些局部特征通常有很高的维度(例如,sift是128维),有很多的冗余信息,直接利用局部特征进行检索,效率和准确度上都不是很好.这就需要重新对提取到的局部特征进行编码,以便于匹配检索. 常用的局部特征编码方法有三种: BoF VLAD FV 本文主要介绍基于k-means聚类算法的BoF的实现. BoF的原理 k均值聚类概述 使用OpenCV实现的BoF BoF 该方法源自于文本处理的词袋模型.Bag-of-words model (BoW model)