L1-066 猫是液体
测量一个人的体积是很难的,但猫就不一样了。因为猫是液体,所以可以很容易地通过测量一个长方体容器的容积来得到容器里猫的体积。本题就请你完成这个计算。
输入格式:
输入在第一行中给出 3 个不超过 100 的正整数,分别对应容器的长、宽、高。
输出格式:
在一行中输出猫的体积。
输入样例:
23 15 20
输出样例:
6900
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
//体积公式
int main()
{
int a,b,c;
cin>>a>>b>>c;
cout<<a*b*c;
return 0;
}
L1-067 洛希极限【学好语文呢】
洛希极限(Roche limit)是一个天体自身的引力与第二个天体造成的潮汐力相等时的距离。当两个天体的距离少于洛希极限,天体就会倾向碎散,继而成为第二个天体的环。它以首位计算这个极限的人爱德华·洛希命名。(摘自百度百科)
大天体密度与小天体的密度的比值开 3 次方后,再乘以大天体的半径以及一个倍数(流体对应的倍数是 2.455,刚体对应的倍数是 1.26),就是洛希极限的值。例如木星与地球的密度比值开 3 次方是 0.622,如果假设地球是流体,那么洛希极限就是 0.622×2.455=1.52701 倍木星半径;但地球是刚体,对应的洛希极限是 0.622×1.26=0.78372 倍木星半径,这个距离比木星半径小,即只有当地球位于木星内部的时候才会被撕碎,换言之,就是地球不可能被撕碎。
本题就请你判断一个小天体会不会被一个大天体撕碎。
输入格式:
输入在一行中给出 3 个数字,依次为:大天体密度与小天体的密度的比值开 3 次方后计算出的值(≤1)、小天体的属性(0 表示流体、1 表示刚体)、两个天体的距离与大天体半径的比值(>1 但不超过 10)。
输出格式:
在一行中首先输出小天体的洛希极限与大天体半径的比值(输出小数点后2位);随后空一格;最后输出
^_^
如果小天体不会被撕碎,否则输出T_T
。输入样例 1:
0.622 0 1.4
输出样例 1:
1.53 T_T
输入样例 2:
0.622 1 1.4
输出样例 2:
0.78 ^_^
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
//读取密度比值,流体类型,距离与半径之比
double a,b,c;
cin>>a>>b>>c;
double d;//计算比值
if(b==1){
d=a*1.0*1.26;
printf("%.2f ",d);
if(d>c)cout<<"T_T";//看计算的极限/R和距离/R,到底谁大
else cout<<"^_^";
}
else if(b==0){
d=a*1.0*2.455;
printf("%.2f ",d);
if(d>c)cout<<"T_T";
else cout<<"^_^";
}
return 0;
}
L1-068 调和平均
N 个正数的算数平均是这些数的和除以 N,它们的调和平均是它们倒数的算数平均的倒数。本题就请你计算给定的一系列正数的调和平均值。
输入格式:
每个输入包含 1 个测试用例。每个测试用例第 1 行给出正整数 N (≤1000);第 2 行给出 N 个正数,都在区间 [0.1,100] 内。
输出格式:
在一行中输出给定数列的调和平均值,输出小数点后2位。
输入样例:
8 10 15 12.7 0.3 4 13 1 15.6
输出样例:
1.61
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
//思路先将所有数都弄为1/a[i],再求和,再/n.
//最后再倒数
//注意数据类型
int main()
{
int n;
cin>>n;
double sum=0;
getchar();//读取空行
double arr[n];
for(int i=1;i<=n;i++){
cin>>arr[i];
arr[i]=1.0/arr[i];//一定要注意这里是1.0
sum+=arr[i];
}
double goal=1.0/(1.0*sum/n);
printf("%.2f",goal);
return 0;
}
L1-069 胎压监测
让我们把四个车轮 —— 左前轮、右前轮、右后轮、左后轮 —— 顺次编号为 1、2、3、4。本题就请你编写一个监测程序,随时监测四轮的胎压,并给出正确的报警信息。报警规则如下:
- 如果所有轮胎的压力值与它们中的最大值误差在一个给定阈值内,并且都不低于系统设定的最低报警胎压,则说明情况正常,不报警;
- 如果存在一个轮胎的压力值与它们中的最大值误差超过了阈值,或者低于系统设定的最低报警胎压,则不仅要报警,而且要给出可能漏气的轮胎的准确位置;
- 如果存在两个或两个以上轮胎的压力值与它们中的最大值误差超过了阈值,或者低于系统设定的最低报警胎压,则报警要求检查所有轮胎。
输入格式:
输入在一行中给出 6 个 [0, 400] 范围内的整数,依次为 1~4 号轮胎的胎压、最低报警胎压、以及胎压差的阈值。
输出格式:
根据输入的胎压值给出对应信息:
- 如果不用报警,输出
Normal
;- 如果有一个轮胎需要报警,输出
Warning: please check #X!
,其中X
是出问题的轮胎的编号;- 如果需要检查所有轮胎,输出
Warning: please check all the tires!
。输入样例 1:
242 251 231 248 230 20
输出样例 1:
Normal
输入样例 2:
242 251 232 248 230 10
输出样例 2:
Warning: please check #3!
输入样例 3:
240 251 232 248 240 10
输出样例 3:
Warning: please check all the tires!
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int a[4], maxL, qL;
int max = 0;//所有轮胎中的最大值
for (int i = 0; i < 4; i++)
{
cin >> a[i];
max = a[i]>max ? a[i] : max;
}
cin >> maxL >> qL;
int index = -1;//可能漏气的轮胎的准确位置
int num = 0;//可能漏气的轮胎的数量
for (int i = 0; i < 4; i++)
{
//如果存在一个轮胎的压力值与它们中的最大值误差超过了阈值,或者低于系统设定的最低报警胎压
if (abs(a[i]-max)>qL || a[i]<maxL)
{
index = i;
num++;
}
}
if (num==0)//啥问题都没
{
cout << "Normal";
}
else
{
if (num==1)//一个有可能漏气,输出 准确位置
{
cout << "Warning: please check #" << index+1 << "!";
}
else //不然都检查
{
cout << "Warning: please check all the tires!";
}
}
return 0;
}
L1-070 吃火锅
以上图片来自微信朋友圈:这种天气你有什么破事打电话给我基本没用。但是如果你说“吃火锅”,那就厉害了,我们的故事就开始了。
本题要求你实现一个程序,自动检查你朋友给你发来的信息里有没有
chi1 huo3 guo1
。输入格式:
输入每行给出一句不超过 80 个字符的、以回车结尾的朋友信息,信息为非空字符串,仅包括字母、数字、空格、可见的半角标点符号。当读到某一行只有一个英文句点
.
时,输入结束,此行不算在朋友信息里。输出格式:
首先在一行中输出朋友信息的总条数。然后对朋友的每一行信息,检查其中是否包含
chi1 huo3 guo1
,并且统计这样厉害的信息有多少条。在第二行中首先输出第一次出现chi1 huo3 guo1
的信息是第几条(从 1 开始计数),然后输出这类信息的总条数,其间以一个空格分隔。题目保证输出的所有数字不超过 100。如果朋友从头到尾都没提
chi1 huo3 guo1
这个关键词,则在第二行输出一个表情-_-#
。输入样例 1:
Hello! are you there? wantta chi1 huo3 guo1? that's so li hai le our story begins from chi1 huo3 guo1 le .
输出样例 1:
5 3 2
输入样例 2:
Hello! are you there? wantta qi huo3 guo1 chi1huo3guo1? that's so li hai le our story begins from ci1 huo4 guo2 le .
输出样例 2:
5 -_-#
#include<iostream>
#include<cmath>
using namespace std;
//这道题的难点事先不知道有多少句,不能while(n--)
//怎么读取有换行的字符串呢
//但有英文字母.结尾的标志哦
int main()
{
string s;
getline(cin,s);
int goal;//记录第一次出现的条数
int cnt=0;//记录次数
int i=1;
while(s!="."){
if(s.find("chi1 huo3 guo1")!=string::npos){
cnt++;
if(cnt==1)goal=i;
}
i++;
getline(cin,s);
}
if(cnt==0){
cout<<i-1<<endl;
cout<<"-_-#";
}else{
cout<<i-1<<endl;
cout<<goal<<" "<<cnt;
}
return 0;
}