C++学习之路 | PTA乙级—— 1062 最简分数 (20 分)(精简)
生活随笔
收集整理的這篇文章主要介紹了
C++学习之路 | PTA乙级—— 1062 最简分数 (20 分)(精简)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1062 最簡分數(shù) (20 分)
一個分數(shù)一般寫成兩個整數(shù)相除的形式:N/M,其中 M 不為0。最簡分數(shù)是指分子和分母沒有公約數(shù)的分數(shù)表示形式。
現(xiàn)給定兩個不相等的正分數(shù) N
?1
?? /M
?1
?? 和 N
?2
?? /M
?2
?? ,要求你按從小到大的順序列出它們之間分母為 K 的最簡分數(shù)。
輸入格式:
輸入在一行中按 N/M 的格式給出兩個正分數(shù),隨后是一個正整數(shù)分母 K,其間以空格分隔。題目保證給出的所有整數(shù)都不超過 1000。
輸出格式:
在一行中按 N/M 的格式列出兩個給定分數(shù)之間分母為 K 的所有最簡分數(shù),按從小到大的順序,其間以 1 個空格分隔。行首尾不得有多余空格。題目保證至少有 1 個輸出。
輸入樣例:
7/18 13/20 12
輸出樣例:
5/12 7/12
#include <iostream> using namespace std; int gcd(int a, int b){return b == 0 ? a : gcd(b, a % b); } int main() {int n1, m1, n2, m2, k;scanf("%d/%d %d/%d %d", &n1, &m1, &n2, &m2, &k);if(n1 * m2 > n2 * m1) {swap(n1, n2);swap(m1, m2);}int num = 1;bool flag = false;while(n1 * k >= m1 * num) num++;while(n1 * k < m1 * num && m2 * num < n2 * k) {if(gcd(num, k) == 1) {printf("%s%d/%d", flag == true ? " " : "", num, k);flag = true;}num++;}return 0; }總結
以上是生活随笔為你收集整理的C++学习之路 | PTA乙级—— 1062 最简分数 (20 分)(精简)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python22个字符串长度_pytho
- 下一篇: wpf 点击按钮弹出选择框_WPF-Po