PAT 1062 最簡分數 20 分

2021-09-22 18:37:01 字數 964 閱讀 1137

乙個分數一般寫成兩個整數相除的形式:n/m,其中 m 不為0。最簡分數是指分子和分母沒有公約數的分數表示形式。

現給定兩個不相等的正分數 n1 /m​1和 n​2​​ /m​2,要求你按從小到大的順序列出它們之間分母為 k 的最簡分數。

輸入在一行中按 n/m 的格式給出兩個正分數,隨後是乙個正整數分母 k,其間以空格分隔。題目保證給出的所有整數都不超過 1000。

在一行中按 n/m 的格式列出兩個給定分數之間分母為 k 的所有最簡分數,按從小到大的順序,其間以 1 個空格分隔。行首尾不得有多餘空格。題目保證至少有 1 個輸出。

7/18 13/20 12
5/12 7/12
在給定分母k的情況下,分子的範圍是【n1/ m1 * k,n2 / m2 * k】,因此可以用迴圈遍歷範圍中所有的整數,如果符合條件,輸出

題目中1測試點是判斷當輸入的第乙個分數大於第二個的情況,交換一下順序即可

第2,3測試點一直通不過,不知道什麼原因,之後改了迴圈的判定條件,總算是通過了

一開始用的判定是( int i = (n1 * k)/ m1 + 1;i<= n2 * k / m2; i++)

後面改用乘法判定( int i = ( n1 * k) / m1+1;m2 * i< n2 * k; i++)總算是ac了

#include

using namespace std;

intisgys

(int a,

int b)

//判斷a,b是否有公約數

//一次運算後自動交換,比如a=5,b=12,一次運算後a=12,b=5

intmain()

int cnt=0;

for(

int i=

(n1*k)

/m1+

1;m2*ireturn0;

}

PAT1062 最簡分數

乙個分數一般寫成兩個整數相除的形式 n m,其中m不為0。最簡分數是指分子和分母沒有公約數的分數表示形式。現給定兩個不相等的正分數 n1 m1 和 n2 m2,要求你按從小到大的順序列出它們之間分母為k的最簡分數。輸入格式 輸入在一行中按n m的格式給出兩個正分數,隨後是乙個正整數分母k,其間以空格...

PAT 1062最簡分數

1062 最簡分數 20 分 乙個分數一般寫成兩個整數相除的形式 n m,其中 m 不為0。最簡分數是指分子和分母沒有公約數的分數表示形式。現給定兩個不相等的正分數 n 1 m 1 和 n 2 m 2 要求你按從小到大的順序列出它們之間分母為 k 的最簡分數。輸入在一行中按 n m 的格式給出兩個正...

PAT 1062 最簡分數 python

乙個分數一般寫成兩個整數相除的形式 n m,其中 m 不為0。最簡分數是指分子和分母沒有公約數的分數表示形式。現給定兩個不相等的正分數 n 1 m 1 和 n 2 m 2 要求你按從小到大的順序列出它們之間分母為 k 的最簡分數。輸入格式 輸入在一行中按 n m 的格式給出兩個正分數,隨後是乙個正整...