c语言问题
oj平台的问题
给你2个分数,求他们的和,并要求和为最简形式。Input
输入有多组测试数据,每组包含四个正整数a,b,c,d(0<a,b,c,d<1000),表示两个分数a/b 和 c/d。
Output
对于每组测试数据,输出两个整数e和f,表示a/b + c/d的最简化结果是e/f,每组输出占一行。
Sample Input
4 3 2 3
Sample Output
5 6
2 1
我的代码:
#include<stdio.h>
int main()
{
int a,b,c,d,e,f,i;
while(~scanf("%d %d %d %d",&a,&b,&c,&d))
{
e=a*b+c*d;
f=b*d;
if(e<f)
{i=e;}
if(e==f)
{printf("%d %d ",e/e,f/f);continue;}
if(e>f) {i=f;}
while(e%i!=0&&f%i!=0)
{ i--; }
printf("%d %d ",e/i,f/i);
}
return 0;
}
算法有什么错?使得我在输入1 2 1 3是会得出1 1的输出?
求解
你的
while(e%i!=0&&f%i!=0)
不正确,应该是
while(e%i!=0||f%i!=0)
另外,你的
printf("%d %d ",e/e,f/f);
直接用
printf("1 1 ");
就可以了
下一篇:电脑换什么CPU
热门标签: