标题:杭电acm1019题
只看楼主
lowrie
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:81
专家分:138
注 册:2015-3-12
结帖率:87.5%
已结贴  问题点数:20 回复次数:7 
杭电acm1019题
The least common multiple (LCM) of a set of positive integers is the smallest positive integer which is divisible by all the numbers in the set. For example, the LCM of 5, 7 and 15 is 105.


Input
Input will consist of multiple problem instances. The first line of the input will contain a single integer indicating the number of problem instances. Each instance will consist of a single line of the form m n1 n2 n3 ... nm where m is the number of integers in the set and n1 ... nm are the integers. All integers will be positive and lie within the range of a 32-bit integer.


Output
For each problem instance, output a single line containing the corresponding LCM. All results will lie in the range of a 32-bit integer.

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

#include <iostream>
using namespace std;

int zu(int a, int b) {
    int r = 1;
    while (r != 0) {
        r = a%b;
        a = b;
        b = r;
    }
    return a;
}
int main() {
    int n;
    cin >> n;
    int k;
    int a, b;
    while (n--) {
        cin >> k;
        cin >> a ;   
        for (int i = 1; i < k;i++) {
            cin >> b;
            a =(a/zu(a, b))*b;
        }
        cout << a << endl;
    }
    system("pause");
    return 0;
}



#include <iostream>
using namespace std;

int zu(int a, int b) {
    int r = 1;
    while (r != 0) {
        r = a%b;
        a = b;
        b = r;
    }
    return a;
}
int main() {
    int n;
    cin >> n;
    int k;
    int a, b;
    while (n--) {
        cin >> k;
        cin >> a>>b ;   
        a== (a / zu(a, b))*b;
        for (int i = 2; i < k;i++) {
            cin >> b;
            a =(a/zu(a, b))*b;
        }
        cout << a << endl;
    }
    system("pause");
    return 0;
}

为什么第一个能ac,第二个不能ac
搜索更多相关主题的帖子: positive multiple contain example numbers 
2016-05-20 10:51
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
第一,你应该告诉别人你要干什么,也就是将那段洋文翻译为中文(求最小公倍数)
第二,你应该告诉别人这两段代码的差异在哪儿,你不能要求别人用肉眼做比较器
cin >> a ;                          |        cin >> a>>b ;
                                    |        a== (a / zu(a, b))*b;
for (int i = 1; i < k;i++) {        |        for (int i = 2; i < k;i++) {


顺便问一句 a== (a / zu(a, b))*b 这一句是干什么用的?没有任何副作用(side-effect)的一条语句。
2016-05-20 12:12
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
system("pause"); 这种垃圾进入了代码,也能ac?我表示怀疑
2016-05-20 12:14
小王同学
Rank: 2
等 级:论坛游民
帖 子:2
专家分:15
注 册:2015-5-31
得分:10 
2016-05-20 12:19
lowrie
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:81
专家分:138
注 册:2015-3-12
得分:0 
这两段代码只有一个地方不一样  
zu(a, b)求出a,b的最大公约数,这个应该没有问题
我知道问题在哪儿了,我把问题理解错了,输入的数可能只有一个,
第二个方法假设开始一定有两个或更多的数求公倍数,但可能只有一个数求公倍数,所以题意理解错误
2016-05-20 14:35
lowrie
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:81
专家分:138
注 册:2015-3-12
得分:0 
回复 3楼 rjsp
这个不是最后提交的代码,提交时肯定删了的
2016-05-20 14:36
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
我把问题理解错了,输入的数可能只有一个
我已经在二楼说了,== 和 = 你要看仔细,一个是比较,一个是赋值

这个不是最后提交的代码,提交时肯定删了的
不可以恶心ACM,但也不能恶心论坛观众呀,所以在网络上提问时,也得将 system("pause") 删掉
2016-05-20 15:29
lowrie
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:81
专家分:138
注 册:2015-3-12
得分:0 
回复 7楼 rjsp
哦,下次注意了。
2016-05-20 15:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-465043-1-1.html




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

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