首页
社区
课程
招聘
[求助] 纠结了好久不知道问题出在哪? 求最简分数形式。
发表于: 2014-10-25 18:49 3974

[求助] 纠结了好久不知道问题出在哪? 求最简分数形式。

2014-10-25 18:49
3974
#include<stdio.h>
int main(void)
{
        int n, a,b,c,d,i,j,x,y;
        while(scanf("%d\n",&n)!=EOF)
        {
                for(i=1;i<=n;i++)
                {
                        scanf("%d %d %d %d",&a,&b,&c,&d);
                        x=a*d+b*c;
                        y=b*d;
                        for(j=2;j<=x;j++)
                        {
                                if(x%j==0&&y%j==0)
                                {
                                        {x=x/j;y=y/j;}
                                }
                        }
                        printf("%d %d\n",x,y);
                }
        }
        return 0;
}

这是我写的代码

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 378
活跃值: (702)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
2
小朋友,你要好好学习打好基础呀,这题应该考的是最大公约数和最小公倍数的问题,我直接在你的代码上面加的代码,很久没有玩过了,代码和算法我也懒得优化了.不过已经AC了!

#include <stdio.h>
// 最大公约数
int gcd(int a, int b)
{
int r = 1;
while(r != 0)
{
r = a%b;
a = b;
b = r;
}
return a;
}

int lcm(int a,int b)
{
int temp_lcm;
temp_lcm=a*b/gcd(a,b); //最小公倍数等于两数之积除以其最大公约数
return temp_lcm;
}

int main(void)
{
int n, a,b,c,d,i,x,y;
int nLcm, nGcd ;
while(EOF != scanf("%d\n",&n))
{
for(i=1;i<=n;i++)
{
scanf("%d %d %d %d",&a,&b,&c,&d);
nLcm = lcm(b, d) ;
x=a*(nLcm/b)+c*(nLcm/d) ;
nGcd = gcd (x, nLcm);
x /= nGcd ;
y = nLcm / nGcd ;
printf("%d %d\n",x,y);
}
}
return 0;
}


已经AC了!
上传的附件:
2014-10-25 20:33
0
雪    币: 10179
活跃值: (3969)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
j应该递减。。。
比如分子分母公约数4,如果递增,先除以2,还可以除2,但是j已经跳过2了。。。
如果j递减应该就不会出现上述问题了。。。
2014-10-25 20:45
0
雪    币: 39
活跃值: (26)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
比较懒,把你的代码加一句话就过了。。
#include<stdio.h>
int main(void)
{
  int n, a,b,c,d,i,j,x,y;
  while(scanf("%d\n",&n)!=EOF)
  {
    for(i=1;i<=n;i++)
    {
      scanf("%d %d %d %d",&a,&b,&c,&d);
      x=a*d+b*c;
      y=b*d;
      for(j=2;j<=x;j++)
      {
        if(x%j==0&&y%j==0)
        {
          {x=x/j;y=y/j;}
j--;
        }
      }
      printf("%d %d\n",x,y);
    }
  }
  return 0;
}
2014-10-25 20:55
0
雪    币: 378
活跃值: (702)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
5

嗯,AC了!
上传的附件:
2014-10-25 23:06
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢,已经ac了。
2014-10-26 02:25
0
雪    币: 16386
活跃值: (1600)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
公式都忘了,唉……
2014-10-26 08:10
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
顶,好贴
2014-10-26 09:16
0
游客
登录 | 注册 方可回帖
返回
//