蓝桥杯历届试题 核桃的数量

  • 内容
  • 相关
问题描述
小张是软件项目经理,他带领 个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。他的要求是:
1. 各组的核桃数量必须相同
2. 各组内必须能平分核桃(当然是不能打碎的)
3. 尽量提供满足1,2条件的最小数量(节约闹革命嘛)
输入格式
输入包含三个正整数a, b, c,表示每个组正在加班的人数,用空格分开(a,b,c<30
输出格式
输出一个正整数,表示每袋核桃的数量。
样例输入1
2 4 5
样例输出1
20
样例输入2
3 1 1
样例输出2

3

    分析:这道题其实就是求三个数的最小公倍数,那么问题就归结到怎样求最小公倍数(https://www.yxfseo.cn/post-213.html)了,方法有很多。

    求三个数的最小公倍数可以先求两个数的最小公倍数。

源代码1

#include <stdio.h>
int gcd(int a,int b); 
int lcm(int a,int b);
int main()
{
	int a,b,c,n;
	scanf("%d%d%d",&a,&b,&c);
	printf("%d\n",lcm(lcm(a,b),c));
	return 0;
}
//最大公约数(a,b)    辗转相除法 
int gcd(int a,int b)
{
	return a%b?gcd(b,a%b):b;
}
//最小公倍数[a,b]    a*b = (a,b)[a,b] 
int lcm(int a,int b)
{
	return (a*b)/gcd(a,b);
} 

源代码2

#include <stdio.h>
int gcd(int a,int b); 
int lcm(int a,int b);
int main()
{
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	printf("%d\n",lcm(lcm(a,b),c));
	return 0;
}
//最大公约数(a,b)    相减法
int gcd(int a,int b)
{
	int m = a, n = b;
	while(a!=b){
		if(a>b)	a = a - b;
		else	b = b - a;
	}
	return a;
}
//最小公倍数[a,b]    a*b = (a,b)[a,b] 
int lcm(int a,int b)
{
	return (a*b)/gcd(a,b);
} 

源代码3

#include <stdio.h>
int max(int a,int b, int c); 
int main()
{
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	int m = max(a,b,c);
	/*求最小公倍数,最大的数开始往上加*/
	while((m%a!=0)||(m%b!=0)||(m%c!=0))
		m++; 
	printf("%d\n",m);
	return 0;
}
//求三个数最大值 
int max(int a,int b, int c)
{
	return (a>b?(a>c?a:c):(b>c?b:c));
}

源代码4:短除法:先求三个数的因数,再做乘积,就是最小公倍数。

#include <stdio.h>
int max(int a,int b, int c); 
int main()
{
	int a,b,c,ans = 1,i,flag;
	scanf("%d%d%d",&a,&b,&c);
	int m = max(a,b,c);
	for(i=2; i<=m; i++){
		flag = 1;
		while(flag){
			flag = 0;
			//找他们的因数 
			if(a%i==0){
				a = a/i;
				flag = 1;
			} 
			if(b%i==0){
				b = b/i;
				flag = 1;
			}
			if(c%i==0){
				c = c/i;
				flag = 1;
			}
			if(flag == 1)	ans*=i;	//因数求积 
			m = max(a,b,c);
		} 
	}
	printf("%d\n",ans);
	return 0;
}
//求三个数最大值 
int max(int a,int b, int c)
{
	return (a>b?(a>c?a:c):(b>c?b:c));
}

本文标签:

版权声明:若无特殊注明,本文皆为《尤尤》原创,转载请保留文章出处。

本文链接:蓝桥杯历届试题 核桃的数量 - https://www.yxfseo.cn/post-214.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

00:00 / 00:00
顺序播放