标题:核桃的数量
小张是软件项目经理,他带领3个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。他的要求是:
- 各组的核桃数量必须相同
- 各组内必须能平分核桃(当然是不能打碎的)
- 尽量提供满足1,2条件的最小数量(节约闹革命嘛)
程序从标准输入读入:
a b c
a,b,c都是正整数,表示每个组正在加班的人数,用空格分开(a,b,c<30)
程序输出:
一个正整数,表示每袋核桃的数量。
例如:
用户输入:
2 4 5
程序输出:
20
再例如:
用户输入:
3 1 1
程序输出:
3
资源约定:
峰值内存消耗(含虚拟机) < 64M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.6及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。
解析:方案一
每袋核桃的数量从1开始循环到最大值(三个开发组的人数乘积),依次判断
Scanner input = new Scanner(System.in);
int a = input.nextInt();
int b = input.nextInt();
int c = input.nextInt();
//核桃数量的可能数量最大值为a*b*c
for (int i = 1; i <= a*b*c; i++)
{
if(i%a==0 && i%b ==0 && i%c==0)
{
System.out.println(i);
break;
}
}
方案二:
求出三个开发组人数最大值,每袋核桃的数量一定是该最大值的倍数,将最大值的倍数依次判断
Scanner input = new Scanner(System.in);
int a = input.nextInt();
int b = input.nextInt();
int c = input.nextInt();
int max = Math.max(Math.max(a, b), c); //求a,b,c最大值
int i = 1; //循环计数变量
int r = 1; //保存max的倍数
//利用循环将max的值不停求倍数,判断倍数是否符合条件
while(true)
{
r = max*i;
if(r%a == 0 && r%b == 0 && r%c == 0)
{
System.out.println(r);
return;
}
i++;
}