问题描述 在海军节开幕式上,有A、B、C三艘军舰要同时开始鸣放礼炮各21响。已知A舰每隔x秒放一次,B舰每隔y秒放一次,C舰每隔z秒放一次。假设各炮手对时间的掌握非常准确,请编程计算观众总共可以听到几次礼炮声。如输入的数字分别是5 6 7,则观众听到的礼炮声数目为54。 输入描述 三个以空格隔开的正整数 输出描述 观众听到的礼炮声数目 样例输入 2 2 2 样例输出 21用C语言怎么写
时间: 2024-02-09 14:06:53 浏览: 26
以下是用 C 语言实现的代码:
```c
#include <stdio.h>
int gcd(int a, int b) { // 求最大公约数
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
int lcm(int a, int b) { // 求最小公倍数
return a * b / gcd(a, b);
}
int main() {
int x, y, z;
scanf("%d %d %d", &x, &y, &z);
int common_lcm = lcm(lcm(x, y), z); // 求出三个数的最小公倍数
int total = common_lcm / x + common_lcm / y + common_lcm / z; // 计算总共可以听到几次礼炮声
printf("%d\n", total);
return 0;
}
```
首先定义了两个函数 `gcd` 和 `lcm`,分别用于求最大公约数和最小公倍数。在 `main` 函数中,首先读入三个正整数 x、y、z,然后分别求出它们的最小公倍数 `common_lcm`,最后计算出观众总共可以听到几次礼炮声 `total`,并输出结果。
相关问题
/*某典礼上,甲、乙、丙三门礼炮要同时开始鸣放,并分别鸣放 n 响,其中甲礼炮每3秒放一次,乙礼炮每4秒放一次,丙礼炮每5秒放一次。假定没有哑炮,且多门礼炮同时鸣放时听众只能听到一次礼炮声,那么当三门礼炮都鸣放完毕时,听众总共可以听到几次礼炮声?请你设计C程序实现计算任务。 输入格式: 在一行中给出一个正整数n,表示每门炮鸣放的次数。 输出格式: 在一行中输出听众总共可以听到的礼炮声数。c语言
实现如下:
#include <stdio.h>
int main()
{
int n;
int count = 0; //听众听到的礼炮声数
scanf("%d", &n); //输入每门炮鸣放的次数
for(int i=1; i<=n; i++)
{
if(i%3==0 || i%4==0 || i%5==0) //判断是否为甲、乙、丙礼炮响放的时间
count++; //如果是,则听众听到了一次礼炮声
}
printf("%d\n", count); //输出听众听到的礼炮声数
return 0;
}