题目描述:
历届试题 核桃的数量
时间限制: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
解题思路:
理清楚题目意思之后,梳理出两点:
1. 每组的核桃数量一致;
2. 每组的核桃数都可以整除人数。
所以,就是求三个数的最小公倍数。
代码如下:
1. 普通解法:
public class Main {
public static int MinCommonMultiple(int num1, int num2, int num3){
int minMultiple = num1;
while (true){
if (minMultiple % num1 == 0 && minMultiple % num2==0 && minMultiple % num3 == 0)
break;
else
minMultiple++;
}
return minMultiple;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int a=input.nextInt();
int b=input.nextInt();
int c=input.nextInt();
int i = MinCommonMultiple(a, b, c);
System.out.println(i);
}
}
2. 递归解法:
import java.util.Scanner;
public class Main {
public static int MinCommonMultiple(int num1, int num2, int num3, int minCommonNum){
if (minCommonNum % num1 == 0 && minCommonNum % num2==0 && minCommonNum % num3 == 0)
return minCommonNum;
else
return MinCommonMultiple(num1, num2, num3, ++minCommonNum);
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int a=input.nextInt();
int b=input.nextInt();
int c=input.nextInt();
int minCommonNum = a;
int i = MinCommonMultiple(a, b, c, minCommonNum);
System.out.println(i);
}
}