1 条题解
-
0
Guest LV 0
-
0
链接
思路
输入是4个整数,我们用 \(a\) , \(b\) , \(c\) , \(d\) 表示,根据分数求和公式 \(\frac{a}{b}\)+\(\frac{c}{d}\)=\(\frac{a×d+b×c}{b×d}\) 可知我们分子 \(fz\),分母 \(fm\)的结果为 \(a×d+b×c\)和 \(b×d\),我们再用 \(g\), \(h\) 暂存 \(fz\), \(fm\)
代码实现:
int a,b,c,d,fz,fm,g,h; cin>>a>>b>>c>>d; fz=a*d+b*c; fm=b*d; g=fz; h=fm;
题目要求是最简分数,而括号内提醒了:
分子与分母的最大公约数为1,当分母为1省略分母
所以我们要找到 \(a×d+b×c\) 和 \(b×d\) 的最大公因数 \(h\),这里使用辗转相除法
代码实现:
while(g!=h) { if(g>h){g=g-h;} else{h=h-g;} }
根据 \(a×d+b×c\) 和 \(b×d\) 的最大公因数 \(h\)化简分子 \(fz\),分母 \(fm\),并分两种情况讨论:
1、如果分母 \(fm\)化简后等于1,则结果为整数,输出化简后的分子 \(\frac{a×d+b×c}{h}\)
2、如果分母 \(fm\)化简后不等于1,则结果不为整数,输出化简后的分子和分母 \(\frac{a×d+b×c}{h}\) 和 \(\frac{b×d}{h}\)
- 1
信息
- ID
- 1000
- 难度
- 9
- 分类
- (无)
- 标签
- (无)
- 递交数
- 3
- 已通过
- 1
- 通过率
- 33%
- 上传者