pat 1062 最简分数(20 分)错误

一个分数一般写成两个整数相除的形式:N/M,其中 M 不为0。最简分数是指分子和分母没有公约数的分数表示形式。

现给定两个不相等的正分数 N?1??/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
#include <stdio.h>

//求两个数的最小公约数
int CommonYue(int m,int n)
{
	int r,num1=m,num2=n;
	while(m%n)
	{
		r=m%n;
		m=n;
		n=r;
	}
	return n;
}
//求两个数的最小公倍数
int CommonBei(int m,int n)
{
	int r,num1=m,num2=n;
	while(m%n)
	{
		r=m%n;
		m=n;
		n=r;
	}
	return num1*num2/n;
} 

int main()
{
	int n1,m1,n2,m2,k;
	scanf("%d/%d %d/%d %d",&n1,&m1,&n2,&m2,&k);
	int com=CommonBei(m1,m2);
	int fenmu=CommonBei(com,k);
	int fenzi1=fenmu/m1*n1;
	int fenzi2=fenmu/m2*n2;
	int temp=fenzi1<=fenzi2?fenzi1:fenzi2;
	int start;
    start=temp/(fenmu/k);
	int a[10000],count=0;
	for(int i=start;;i++)
	{
		if(i*(fenmu/k)>=fenzi1&&i*(fenmu/k)<=fenzi2)
		{
			 if(CommonYue(k,i)==1)
	         {
	        	a[count++]=i;
	         }
		}
		if(i*(fenmu/k)>fenzi2)
		{
			break;
		}
	}
	if(count==1)
	{
		printf("%d/%d",a[count-1],k);
	}
	else
	{
		 for(int i=0;i<count-1;i++)
         {
        	printf("%d/%d ",a[i],k);
         }
   	     printf("%d/%d",a[count-1],k);
	}
	return 0;
}

  

原文地址:https://www.cnblogs.com/houchen/p/9271404.html

时间: 2024-09-29 06:04:22

pat 1062 最简分数(20 分)错误的相关文章

PAT Basic 1062 最简分数 (20 分)

一个分数一般写成两个整数相除的形式:/,其中 M 不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 / 和 /,要求你按从小到大的顺序列出它们之间分母为 K 的最简分数. 输入格式: 输入在一行中按 / 的格式给出两个正分数,随后是一个正整数分母 K,其间以空格分隔.题目保证给出的所有整数都不超过 1000. 输出格式: 在一行中按 / 的格式列出两个给定分数之间分母为 K 的所有最简分数,按从小到大的顺序,其间以 1 个空格分隔.行首尾不得有多余空格.题目保证

PAT 1062. 最简分数(20)

一个分数一般写成两个整数相除的形式:N/M,其中M不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 N1/M1 和 N2/M2,要求你按从小到大的顺序列出它们之间分母为K的最简分数. 输入格式: 输入在一行中按N/M的格式给出两个正分数,随后是一个正整数分母K,其间以空格分隔.题目保证给出的所有整数都不超过1000. 输出格式: 在一行中按N/M的格式列出两个给定分数之间分母为K的所有最简分数,按从小到大的顺序,其间以1个空格分隔.行首尾不得有多余空格.题目保证

PAT——1062. 最简分数

一个分数一般写成两个整数相除的形式:N/M,其中M不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 N1/M1 和 N2/M2,要求你按从小到大的顺序列出它们之间分母为K的最简分数. 输入格式: 输入在一行中按N/M的格式给出两个正分数,随后是一个正整数分母K,其间以空格分隔.题目保证给出的所有整数都不超过1000. 输出格式: 在一行中按N/M的格式列出两个给定分数之间分母为K的所有最简分数,按从小到大的顺序,其间以1个空格分隔.行首尾不得有多余空格.题目保证

PAT 1062 最简分数

https://pintia.cn/problem-sets/994805260223102976/problems/994805268334886912 一个分数一般写成两个整数相除的形式:/,其中 M 不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 / 和 /,要求你按从小到大的顺序列出它们之间分母为 K 的最简分数. 输入格式: 输入在一行中按 / 的格式给出两个正分数,随后是一个正整数分母 K,其间以空格分隔.题目保证给出的所有整数都不超过 1000.

1062. 最简分数

1062. 最简分数(20)-PAT乙级真题 一个分数一般写成两个整数相除的形式:N/M,其中M不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 N1/M1 和 N2/M2,要求你按从小到大的顺序列出它们之间分母为K的最简分数. 输入格式: 输入在一行中按N/M的格式给出两个正分数,随后是一个正整数分母K,其间以空格分隔.题目保证给出的所有整数都不超过1000. 输出格式: 在一行中按N/M的格式列出两个给定分数之间分母为K的所有最简分数,按从小到大的顺序,其间

pat 1116 Come on! Let&#39;s C(20 分)

1116 Come on! Let's C(20 分) "Let's C" is a popular and fun programming contest hosted by the College of Computer Science and Technology, Zhejiang University. Since the idea of the contest is for fun, the award rules are funny as the following: 0

pat 1124 Raffle for Weibo Followers(20 分)

1124 Raffle for Weibo Followers(20 分) John got a full mark on PAT. He was so happy that he decided to hold a raffle(抽奖) for his followers on Weibo -- that is, he would select winners from every N followers who forwarded his post, and give away gifts.

pat 1035 Password(20 分)

1035 Password(20 分) To prepare for PAT, the judge sometimes has to generate random passwords for the users. The problem is that there are always some confusing passwords since it is hard to distinguish 1 (one) from l (L in lowercase), or 0 (zero) fro

PAT 乙级 1074 宇宙无敌加法器 (20 分)

1074 宇宙无敌加法器 (20 分) 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为"PAT数".每个 PAT 星人都必须熟记各位数字的进制表,例如"--0527"就表示最低位是 7 进制数.第 2 位是 2 进制数.第 3 位是 5 进制数.第 4 位是 10 进制数,等等.每一位的进制 d 或者是 0(表示十进制).或者是 [2,9] 区间内的整数.理论上这个进制