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 最简分数的主要内容,如果未能解决你的问题,请参考以下文章