2013年Java方向C组第七题

标题:核桃的数量

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

  1. 各组的核桃数量必须相同
  2. 各组内必须能平分核桃(当然是不能打碎的)
  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++;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • /** 七、核桃的数量 小张是软件项目经理,他带领3个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组...
    FiveZM阅读 3,290评论 0 0
  • 一、/*最大最小值 问题描述给定 N 个整数,请你找出这 N 个数中最大的那个和最小的那个。 输入格式第一行包含一...
    逍遥_9353阅读 1,360评论 0 2
  • 资源限制时间限制:1.0s 内存限制:256.0MB 问题描述小张是软件项目经理,他带领3个开发组。工期紧,今...
    melody_yuan阅读 1,162评论 0 0
  • 题目 小张是软件项目经理,他带领 3 个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据...
    chenxuxu阅读 6,223评论 3 8
  • 资源限制时间限制:1.0s 内存限制:256.0MB问题描述小张是软件项目经理,他带领3个开发组。工期紧,今天...
    技术宅mian阅读 1,414评论 0 1

友情链接更多精彩内容