ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

1062 最简分数 测试点1、2、4

2022-07-11 19:34:33  阅读:154  来源: 互联网

标签:简分数 return 测试点 int 1062 long M1 tmp5


易错点

测试点1:审题务必仔细!题干中没有说明N1/M1 和 N2/M2的大小,容易认为N1/M1小于 N2/M2,但可能有N1/M1大于 N2/M2

测试点2:注意遍历的方法,以免运行超时

测试点4:查找分母和分子的公因数的时候,须考虑分母可能是分子的倍数

关键

  1. 找可能的分子
  2. 判断两个数是否互质

代码

#include <iostream>
#include <cstdio>
using namespace std;

int gcd(int a, int b){
	if(b==0){
		return a;
	}
	else{
		return gcd(b, a % b);
	}
}
bool na(long long a,long long b){
	if(a>b){
		;
	}
	else{
		int c;
		c=a;
		a=b;
		b=c;
	}
	if(a%2==0&&b%2==0){
		return 0;
	}
	for(int i=3;i<=b;i+=2){
		if(b%i==0){
			if(a%i==0){
				return 0;
			}
		}
	}
	return 1;
}
int tona(long long a,long long b){
	if(a>b){
		;
	}
	else{
		int c;
		c=a;
		a=b;
		b=c;
	}
	if(a%2==0&&b%2==0){
		return 2;
	}
	for(int i=3;i*i<=b;i+=2){
		if(b%i==0){
			if(a%i==0){
				return i;
			}
		}
	}
}
int main()
{
	long long a,b,c,d;
	string s1,s2,s3,s4;
	long long k;
	getline(cin,s1,'/');
	getline(cin,s2,' ');
	getline(cin,s3,'/');
	getline(cin,s4,' ');
	a=stoi(s1);
	b=stoi(s2);
	c=stoi(s3);
	d=stoi(s4);
	if(a<0){
		a=-a;
		b=-b;
	}
	if(c<0){
		c=-c;
		d=-d;
	}
	int tmp3=0,tmp4=0;
	if(a*d>b*c){
		tmp3=a;
		a=c;
		c=tmp3;
		tmp4=b;
		b=d;
		d=tmp4;
	}
	int tmp5;
	while(na(a,b)==0){
		tmp5=tona(a,b);
		a=a/tmp5;
		b=b/tmp5;
	}
	while(na(c,d)==0){
		tmp5=tona(c,d);
		c=c/tmp5;
		d=d/tmp5;
	}
	cin>>k;
	int tmp=0;
	int tmp2=0;
	for(long long i=k*d*a+1;i<=k*c*b-1;){	
		if(i%(b*d)==0){	
			if(na(k,(i/(b*d)))==1){//i/(b*d)和k互质 
//			if(gcd(k,(i/(b*d)))==1&&k!=(i/(b*d))){//i/(b*d)和k互质 
				if(tmp==0){
					cout<<(i/(b*d))<<"/"<<k;
					tmp=1;
				}
				else{
					cout<<" "<<(i/(b*d))<<"/"<<k;
				}
			}
			tmp2=1;
			i+=(b*d);
		}
		if(tmp2==0){
			if(i==k*d*a+1){
				i--;
			}
			i+=d;
		}
	}
	return 0;
}

标签:简分数,return,测试点,int,1062,long,M1,tmp5
来源: https://www.cnblogs.com/wodeblog1982/p/16467599.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有