PAT 乙级 1053 住房空置率 v1.0
1. 题目简述及在线测试位置
1.1 根据已知条件(条件1:在观察期内,若存在超过一半的日子用电量低于电量阈值,该住房“可能空置”;条件2:若观察期超过观察期阈值,且满足条件1,该住房为“空置”),统计 可能空置房屋 和 空置房屋。
1.2 在线测试位置: 1053 住房空置率
2. 基本思路
根据题意编码进行条件判定。注意:空置 和 可能空置 是互斥关系;可以通过 printf("%%") 打印输出 %
3. 完整AC代码
#include <iostream>
using namespace std;
int main()
{
int Number;
double Threshold;
int MonitorDays;
cin >> Number >> Threshold >> MonitorDays; //住房总数 电量阈值 观察期阈值
//条件1:在观察期内,若存在超过一半的日子用电量低于Threshold,该住房“可能空置”
//条件2:若观察期超过MonitorDays,且满足条件1,该住房为“空置”
int Days, bak, Count = 0; double Consume; //Days代表实际观察天数
int MaybeIdle=0, Idle=0; //可能空置 空置
for(int i=0;i<Number;i++)
{
cin >> Days;
bak = Days;
while (bak--)
{
cin >> Consume;
if (Consume < Threshold)
Count++;
}
if (Count * 2 > Days && Days > MonitorDays)//满足条件1和条件2
Idle++;
else if (Count * 2 > Days) //只满足条件1
MaybeIdle++;
Count = 0;
}
printf("%0.1f%% ", (float)MaybeIdle / Number*100);
printf("%0.1f%%", (float)Idle / Number*100);
return 0;
}