| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4876 人关注过本帖
标题:【求助】杭电acm 1019 Least Common Multiple(最小公倍数)
取消只看楼主 加入收藏
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
结帖率:80%
收藏
已结贴  问题点数:100 回复次数:6 
【求助】杭电acm 1019 Least Common Multiple(最小公倍数)
题目要求是这样:求一组数据的最小公倍数,比如说,5,7和15的最小公倍数是105
输入要求:
开始输入一个整数,表示测试用例数。接下来输入一个整数表示这个测试例子所用多少个整数。
输出要求:
每组用例占一行输出,输出的数不超过32位整型数;

Sample Input
2
3 5 7 15
6 4 10296 936 1287 792 1

Sample Output
105
10296

我写的代码如下:
程序代码:
#include <stdio.h>

int fun (int x, int y)            //求两数的最小公倍数
{
    int        temp, r, large, small;

    if (x < y)
    {
        temp = y;
        y     = x;
        x     = temp;
    }
    large = x;
    small = y;
    while ((r = x % y) > 0)
    {
        x = y;
        y = r;
    }

    return large * small / y;
}
int    main ()
{
    int        m, n;
    int        i;
    int        a, mul;

    scanf ("%d", &m);
    while (m--)
    {
        scanf ("%d", &n);
        mul = 1;
        for (i = 0; i < n; i++)
        {
            scanf ("%d", &a);
            mul = fun (mul, a);
        }
        printf ("%d\n", mul);
    }

    return 0;
}
思路是每输入一个数,就和之前的数计算两数的最小公倍数,知道输入结束。
题目本身不难,可提交上去显示就是Wrong Answer,求指点,拜托了!
搜索更多相关主题的帖子: 测试 最小公倍数 
2011-10-06 20:41
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
回复 2楼 草狼
很遗憾,我把所有的都调成long long试过,答案依然是Wrong Answer,不信你可以拿我这程序去试

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-10-06 22:02
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
回复 11楼 beyondyf
是这样啊,没想那么多,怪不得不对。

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-10-09 21:56
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
回复 9楼 wxfcyuyan
很遗憾,这是在做题,输出必须和它给的示例一模一样,而且单纯这样改也不能通过测试。

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-10-09 21:59
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
回复 4楼 草狼
我明白了,里面的数先相乘可能会变成非常大的数,这样就会导致精度损失,在/y的数就不对了,
用长整型后就不会导致精度损失了,而且/y之后的数值即使由int型去表示也不会损失精度,但是还有一个问题,为什么我把函数返回值类型也变成long long之后还是会出错呢?

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-10-09 22:03
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
回复 17楼 dreamofgod
这样执行循环的时间会不会太长,尤其是减数比较小的时候?

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-10-10 22:22
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
回复 19楼 dreamofgod
这还不是用到了除法吗?没什么优势可言。

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-10-12 22:36
快速回复:【求助】杭电acm 1019 Least Common Multiple(最小公倍数)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017356 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved