1062 最简分数

Posted CSU迦叶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1062 最简分数相关的知识,希望对你有一定的参考价值。

注意点: 

1. 对两个分数之间的理解,这应该是一个开区间而不是闭区间

2. 读入的时候用 scanf("%d/%d %d/%d %d",&N1,&M1,&N2,&M2,&K) 不可以,分号前后会被视为一个整体。

AC代码

#include<cstdio>
#include<iostream>
#include<set>
#include<vector>
#include<map>
#include<algorithm>
#include<cmath>
#include<queue>
#include<string>

using namespace std;

const int maxn = 1001;

int gcd(int a,int b){
	return b==0?a:gcd(b,a%b);
}

int main(){
	int N1,M1,N2,M2,K;
	string str1,str2;
	cin>>str1>>str2;
	scanf("%d",&K);
	sscanf(str1.c_str(),"%d/%d",&N1,&M1);
	sscanf(str2.c_str(),"%d/%d",&N2,&M2);
	
	if(N1*M2>N2*M1){
		swap(N1,N2);
		swap(M1,M2); 
	}
	
	int is = (int)floor((N1*K*1.0)/M1);
	int ie = (int)ceil((N2*K*1.0)/M2);
	
	vector<int> vi;
	for(int i=is+1;i<ie;i++){
		if(gcd(i,K)==1)vi.push_back(i);
	}
	
	for(int i=0;i<vi.size();i++){
		printf("%d/%d%s",vi[i],K,i==vi.size()-1?"\\n":" ");
	}
	
	return 0;
}

以上是关于1062 最简分数的主要内容,如果未能解决你的问题,请参考以下文章

PAT乙级1062

PAT Basic 1062. 最简分数

1062. 最简分数

1062 最简分数 (20 分)

PAT 1062. 最简分数

PAT 1062 最简分数