1062 最简分数(PAT乙级 C++)
生活随笔
收集整理的這篇文章主要介紹了
1062 最简分数(PAT乙级 C++)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目
一個分?jǐn)?shù)一般寫成兩個整數(shù)相除的形式:N/M,其中 M 不為0。最簡分?jǐn)?shù)是指分子和分母沒有公約數(shù)的分?jǐn)?shù)表示形式。
現(xiàn)給定兩個不相等的正分?jǐn)?shù) N1/M?1?? 和 N?2/M?2?? ,要求你按從小到大的順序列出它們之間分母為 K 的最簡分?jǐn)?shù)。
輸入格式:
輸入在一行中按 N/M 的格式給出兩個正分?jǐn)?shù),隨后是一個正整數(shù)分母 K,其間以空格分隔。題目保證給出的所有整數(shù)都不超過 1000。
輸出格式:
在一行中按 N/M 的格式列出兩個給定分?jǐn)?shù)之間分母為 K 的所有最簡分?jǐn)?shù),按從小到大的順序,其間以 1 個空格分隔。行首尾不得有多余空格。題目保證至少有 1 個輸出。
輸入樣例:
7/18 13/20 12輸出樣例:
5/12 7/12分析
- 題目要求很簡單,就是找出固定區(qū)間內(nèi)固定分母的最簡分?jǐn)?shù)。遍歷的時候,除了判斷分?jǐn)?shù)是否在區(qū)間內(nèi),還要判斷分子和分母是否互質(zhì)。
- 兩個分?jǐn)?shù)大小不確定,如果前者大,需要交換后,再進(jìn)行運算。
- 輸出格式要求。因為無法確定具體的個數(shù),所以只能從第一個數(shù)開始控制格式。即第一個不輸出空格,后面的輸出之前先輸出一個空格。
AC代碼
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; void Swap(double &a,double &b) {double temp=a;a=b;b=temp; } int main() {int i,a1,b1,a2,b2,k,flag=0;scanf("%d/%d %d/%d %d",&a1,&b1,&a2,&b2,&k);double c1=(double)a1/b1;double c2=(double)a2/b2;if(c1>c2) Swap(c1,c2);double t;for(i=1; i<k; i++){t=(double)i/k;if(t>c1&&t<c2){if(__gcd(i,k)==1){if(flag==0){cout<<i<<"/"<<k;flag++;}else{cout<<" "<<i<<"/"<<k;}}}}return 0; }更多題解
PAT 乙級(Basic Level) 題解匯總(持續(xù)更新)(C++)
總結(jié)
以上是生活随笔為你收集整理的1062 最简分数(PAT乙级 C++)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 姑奶奶的老公应该叫什么
- 下一篇: 上海物价高吗