问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用C语言计算听到的礼炮声 哎呦喂 这哪是编程啊 这比数学还难。。求指教

发布网友 发布时间:2022-04-26 09:09

我来回答

3个回答

热心网友 时间:2023-10-09 04:01

#include "stdio.h"
int main()
{
int n,a,b,c;
int ta,tb,tc,na,va,vb,vc;
scanf("%d%d%d%d",&n,&a,&b,&c);
ta=n*a;//a鸣n次用的总时间
tb=n*b;//b鸣n次用的总时间
tc=n*c;//c鸣n次用的总时间
na=n*3;//没有重复时,观众会听到的次数
va=a;
vb=b;
vc=c;
//是否会一起鸣炮
if(a==b==c)
{
printf("%d\n",n);
return 0;
na=na-2;
}
else if(a==b || a==c || b==c)
na--;
//这个循环模拟,鸣炮的过程,若有abc一起鸣,则na减2,若有两个一起鸣,则na减1
while(1)
{
if(a<ta && b<tb && c<tc)
{

if(a<=b&&a<=c)
{
a+=va;
if(a==b==c)
na--;
else if(a==b || a==c)
na--;
}
else if(b<=a&&b<=c)
{
b+=vb;
if(a==b==c)
na--;
else if(b==a || b==c)
na--;

}
else if(c<=a&&c<=b)
{
c+=vc;
if(a==b==c)
na--;
else if(c==a || c==b)
na--;
}
}
else if(a<ta && b<tb)
{
if(a<=b)
{
a+=va;
if(a==b)
na--;
}else{
b+=vb;
if(a==b)
na--;
}
}
else if(a<ta && c<tc)
{
if(a<=c)
{
a+=va;
if(a==c)
na--;
}else{
c+=vc;
if(a==c)
na--;
}
}
else if(b<tb && c<tc)
{
if(c<=b)
{
c+=vc;
if(c==b)
na--;
}else{
b+=vb;
if(c==b)
na--;
}
}
else
break;

}
printf("%d\n",na);
return 0;
}

热心网友 时间:2023-10-09 04:02

利用最小公倍数能够求出重叠的炮声,然后用总的炮声减去即可。

具体代码如下:

#include <stdio.h>
#include<stdlib.h>
#include<math.h>

int Lcm ( int a, int b );

 main()
{
int st;  //重叠的炮声

st=5*21/Lcm(5,6)+6*21/Lcm(6,7)+5*21/Lcm(5,7);  //利用最小公倍数求重叠的炮声
printf("n=%d",21*3-st);

system("pause");
 }

 //函数功能:输出两个数的最小公倍数
 int Lcm ( int a, int b )
 {
int i;
for (i= a; i<=a*b ; i++ )
{
if ( i % a == 0 && i % b ==0 )
break;
}
return i;
 }

热心网友 时间:2023-10-09 04:02

看我的解法,空间换时间。就是多占用存储空间。但是时间复杂度很好。

int max = a>b?(b>c?a:(a>c?a:c)) : (b>c?b:c)); //求出abc最大值
int lenth = max*n;
int* temp = (int*)new(sizeof(int)*lenth); //分配一个int数组 元素个数为n*max
memset(temp,0, lenth); //数组值全部置为0
int idx = 0;
while(idx < a) temp[idx++*a] = 1; //代表此处鞭炮响

idx = 0;
while(idx < b) temp[idx++*a] = 1;

idx = 0;
while(idx < c) temp[idx++*a] = 1;

int count = 0;
while(lenth--){ //统计响声次数,因为都是在一个数组里,所以可以把一起响的响声当成一次.
if(temp[lenth])
count++;
}

printf("总共%d响声", count);
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
神九返回后轨道舱分离去哪里了,是在轨道继续运行,还是不管了。天宫一... 空间站通常由对接舱、气闸舱、轨道舱、生活舱、服务舱、专用设备... 为什么不让神舟七号的轨道舱留在天上让神州八号去追? 洗衣机生产厂家 狗鱼好吃吗? 洪霞的爷爷知识很丰富,你能用哪些成语来形容他 用什么成语可以形容包罗各种各样的想法 什么万千的成语有哪些 重庆哪些考研大学 重庆师范大学考研好不好考 描写“家族兴旺”的诗句有哪些? 本人家族正在做家谱,现需赞颂家族的诗词一首,最好为对联或绝句,本人杜_百度问一问 开国大典的五十四门礼炮是哪五十四个民族?没有哪两个民族??? 形容大家族的古诗词 奥运会开幕式礼炮燃放总数为多少? 家族兴旺发达的诗词 让家族兴旺昌盛的诗句有哪些? 国庆礼炮的规制是什么? 跟“家族”有关的诗句有哪些? 在开国大典时为什么54门大炮齐鸣28响?有什么特殊的意义呢? 赞美家族的诗句 描写家族的诗句 跟家族有关的诗句 赞美“家族”的诗句有哪些? 形容“家族”的诗句有哪些? 债务化解什么意思 解决债务纠纷方式有哪些 请问如何化解债务? 如何快速解决债务问题 债务追讨的几种解决方式 升旗的时候,礼炮响起来。每一响都是54门大炮齐发,一共28响。文中两个数字所起什么作用 我姓周,正在写家谱,现需赞颂家族的诗词一首,最好为七言绝句。 为什么朝鲜21响礼炮送别金正日 家族兴旺的七言诗句有哪些? 家族名编一首诗词 赞颂家族的诗歌,必须要有抒情,要两首,谢谢 求古风家族名称,诗词歌赋类,什么什么庄什么什么阁的。分五类!谢谢 村干部个人自传需要写已婚情况吗 XX地产目标成本科目编制明细表(2019版) 贷款利息放在目标成本哪个科目下 村干部800字入党自传书,小学文化 大学生村官期间我没有把档案交给组织部,后来辞退了,影响政审么? 目标成本核算 村干部怎样写简历 房地产中 何为一类成本 、二类成本、 目标成本怎么区分? 生产订单中的成本核算:目标成本和计划成本有何区别 当村干部的申请怎么写 最新-村干部个人对照检查材料范文 精品 施工队会计科目 村里如何发展党员