题 历届试题 核桃的数量

 

资源限制
时间限制:1.0s   内存限制:256.0MB
 
问题描述

小张是软件项目经理,他带领3个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。他的要求是:

1. 各组的核桃数量必须相同

2. 各组内必须能平分核桃(当然是不能打碎的)

3. 尽量提供满足1,2条件的最小数量(节约闹革命嘛)

输入格式
输入包含三个正整数a, b, c,表示每个组正在加班的人数,用空格分开(a,b,c<30)
 
输出格式
输出一个正整数,表示每袋核桃的数量。
 
样例输入1
2 4 5
 
样例输出1
20
 
样例输入2
3 1 1
 
样例输出2
3
 
 
我们知道,两个数的最小公倍数等于它们的乘积除以它们的最大公因数,那三个数呢?
假设有三个数a, b, c,我们可以先求出其中两个数的最小公倍数(temp = a*b / gcd(a, b)),那么三个数的最小公倍数就是temp和c的最小公倍数(temp*c / gcd(temp, c) ).
 
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstdlib>
 4 #include <cmath>
 5 #include <algorithm>
 6 
 7 using namespace std;
 8 
 9 int gcd(int a, int b) {
10     int t=a%b;
11     while(t) {
12         a=b;
13         b=t;
14         t=a%b;
15     }
16     return b;
17 }
18 
19 int main() {
20     int a, b, c;
21     cin>>a>>b>>c;
22     int temp=a*b/gcd(a, b);
23     cout<<temp*c/gcd(temp, c)<<endl;
24     return 0;
25 } 
26 /*
27 15 6 12
28 
29 60
30 */

 

 

 
 
 
posted @ 2020-08-24 16:16  自在逍遥处  阅读(126)  评论(0编辑  收藏  举报