历届试题 核桃的数量

问题描述

小张是软件项目经理,他带领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

真是胡乱搞,然后就AC了

AC代码

#include<stdio.h>
#include<algorithm>

using namespace std;

int gcd(int x, int y)
{
    if(y == 0)
        return x;
    else
        return gcd(y, x % y);
}

int main()
{
    int a, b, c;
    while(~scanf("%d%d%d", &a, &b, &c))
    {
        int m, n, t, sum, num1, num2;
        m = gcd(a, b);
        n = gcd(b, c);
        t = gcd(a, c);
        num1 = max(m, n);
        num2 = max(num1, t);
        sum = a*b*c;
        if(m == n)
            printf("%d
", sum/(m*num2));
        else if(m == t)
            printf("%d
", sum/(m*num2));
        else if(n == t)
            printf("%d
", sum/(n*num2));
        else
            printf("%d
", sum/num2);
    }

    return 0;
}
View Code
永远渴望,大智若愚(stay hungry, stay foolish)
原文地址:https://www.cnblogs.com/h-hkai/p/8511150.html