AT765 真冬日?真夏日?

题面翻译

题目描述:
定义以下天气:

1.酷暑:这一天最高气温35度及以上。

2.盛夏:这一天最高气温30~35度(不含35)。

3.夏日:这一天最高气温25~30度(不含30)。

4.热带夜:最低气温25度及以上(含25)。

5.冬天:最低气温0度以下(不含0),最高气温为0度以上(含0)。

6.真冬日:最高气温0度以下(不含0)。

现在,给出n天的最高气温和最低气温,求出这6种天气各有多少天(一天中可能有多种天气!)

输入格式:
共n+1行。
第一行:一个整数n,表示有几天。(0<=n<=3650)

2~n-1行:两个实数high,low,表示最高温度和最低温度。(-90.0<=low<=high<=60.0)

输出格式:
共1行。
6个整数,分别为6种天气出现的天数。

原题描述

洛谷真题

夏になると「真夏日」や「熱帯夜」などをよく耳にしますが、実際には次のように予報用語が定義されています。

  1. 猛暑日:最高気温が $ 35 $ 度以上の日
  2. 真夏日:最高気温が $ 30 $ 度以上、 $ 35 $ 度未満の日
  3. 夏日 :最高気温が $ 25 $ 度以上、 $ 30 $ 度未満の日
  4. 熱帯夜:最低気温が $ 25 $ 度以上の日
  5. 冬日 :最低気温が $ 0 $ 度未満で、最高気温が $ 0 $ 度以上の日
  6. 真冬日:最高気温が $ 0 $ 度未満の日

いま、ある地点での日毎の最高気温と最低気温の観測結果が与えられます。
このとき、上述した猛暑日、真夏日、夏日、熱帯夜、冬日、真冬日はそれぞれ何日ずつあったかを出力してください。
ただし、ここでの「気温」とは、摂氏のことを表します。
複数の予報用語に属する日が存在することに注意してください。

输出格式

猛暑日・真夏日・夏日・熱帯夜・冬日・真冬日の日数を、半角スペース区切りで $ 1 $ 行で出力せよ。
なお、出力の順序は前述の通りで、最後には改行をいれること。

样例

样例输入1

4
32.2 25.3
36.4 26.4
24.1 18.0
26.0 24.9

样例输出1

1 1 1 2 0 0

样例输入2

3
-2 -5.2
2 -0.1
26.0 -0.1

样例输出2

0 0 1 0 2 1

样例输入3

4
15.0 9.5
12.5 10.5
20.5 19.9
15.5 15.5

样例输出3

0 0 0 0 0 0

提示

Sample Explanation 1

- $ 1 $ 日目は最高気温が $ 32.2 $ 度で、最低気温が $ 25.3 $ 度です。この日は真夏日かつ熱帯夜です。 - $ 2 $ 日目は最高気温が $ 36.4 $ 度で、最低気温が $ 26.4 $ 度です。この日は猛暑日かつ熱帯夜です。 - $ 3 $ 日目は最高気温が $ 24.1 $ 度で、最低気温が $ 18.0 $ 度です。この日はいずれにも該当しません。 - $ 4 $ 日目は最高気温が $ 26.0 $ 度で、最低気温が $ 24.9 $ 度です。この日は夏日です。

Sample Explanation 2

- $ 1 $ 日目は最高気温が $ -2 $ 度で、最低気温が $ -5.2 $ 度です。この日は真冬日です。 - $ 2 $ 日目は最高気温が $ 2 $ 度で、最低気温が $ -0.1 $ 度です。この日は冬日です。 - $ 3 $ 日目は最高気温が $ 26.0 $ 度で、最低気温が $ -0.1 $ 度です。この日は夏日かつ冬日です。

思路

这题很水,但坑十分多,我被坑惨了 ‘~’
我们先输入,然后对每一组样例进行判断但不要用else,else.if可以合理使用,然后给相应的组别 + + ++ ++,最后输出

解题

这是我一开始的代码

#include<bits/stdc++.h>
using namespace std;
int tianqi[7],n;
double gao[3651],di[3651];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>gao[i]>>di[i];
		if(gao[i]>=35){
			tianqi[1]++;
		}else if(gao[i]>=30){
			tianqi[2]++;
		}else if(gao[i]>=25){
			tianqi[3]++;
		}
		if(di[i]>=25){
			tianqi[4]++;
		}
		if(di[i]<=0 && gao[i]>=0){
			tianqi[5]++;
		}
		if(gao[i]<=0){
			tianqi[6]++;
		}
	}
	for(int i=1;i<=6;i++){
		cout<<tianqi[i]<<" ";//错误点
	}
	cout<<"\n";
	return 0;
}

这里输出了多余的空格岛国题不允许
so

#include<bits/stdc++.h>
using namespace std;
int tianqi[7],n;
double gao,di;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>gao>>di;
		if(gao>=35){
			tianqi[1]++;
		}else if(gao>=30){
			tianqi[2]++;
		}else if(gao>=25){
			tianqi[3]++;
		}
		if(di>=25){
			tianqi[4]++;
		}
		if(di<=0 && gao>=0){//错误点
			tianqi[5]++;
		}
		if(gao<=0){//错误点
			tianqi[6]++;
		}
	}
	for(int i=1;i<=5;i++){
		cout<<tianqi[i]<<" ";
	}
	cout<<tianqi[6];//订正的
	cout<<"\n";
	return 0;
}

这又错了因为

5.冬天:最低气温0度以下(不含0),最高气温为0度以上(含0)。
6.真冬日:最高气温0度以下(不含0)。

so


#include<bits/stdc++.h>
using namespace std;
int tianqi[7],n;
double gao,di;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>gao>>di;
		if(gao>=35){
			tianqi[1]++;
		}else if(gao>=30){
			tianqi[2]++;
		}else if(gao>=25){
			tianqi[3]++;
		}
		if(di>=25){
			tianqi[4]++;
		}
		if(di<0 && gao>=0){
			tianqi[5]++;
		}
		if(gao<0){
			tianqi[6]++;
		}
	}
	for(int i=1;i<=5;i++){
		cout<<tianqi[i]<<" ";
	}
	cout<<tianqi[6];
	cout<<"\n";
	return 0;
}

然后AC啦!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值