PAT乙级—1053 住房空置率 (20分)

在不打扰居民的前提下,统计住房空置率的一种方法是根据每户用电量的连续变化规律进行判断。判断方法如下:

  • 在观察期内,若存在超过一半的日子用电量低于某给定的阈值 e,则该住房为“可能空置”;
  • 若观察期超过某给定阈值 D 天,且满足上一个条件,则该住房为“空置”。
    现给定某居民区的住户用电量数据,请你统计“可能空置”的比率和“空置”比率,即以上两种状态的住房占居民区住房总套数的百分比。

输入格式:
输入第一行给出正整数 N(≤1000),为居民区住房总套数;正实数 e,即低电量阈值;正整数 D,即观察期阈值。随后 N 行,每行按以下格式给出一套住房的用电量数据:
K E​1​​ E​2​​ … E​K​​
其中 K 为观察的天数,E​i​​ 为第 i 天的用电量。
输出格式:
在一行中输出“可能空置”的比率和“空置”比率的百分比值,其间以一个空格分隔,保留小数点后 1 位。

输入样例:
5 0.5 10
6 0.3 0.4 0.5 0.2 0.8 0.6
10 0.0 0.1 0.2 0.3 0.0 0.8 0.6 0.7 0.0 0.5
5 0.4 0.3 0.5 0.1 0.7
11 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1
11 2 2 2 1 1 0.1 1 0.1 0.1 0.1 0.1

输出样例:
40.0% 20.0%

(样例解释:第2、3户为“可能空置”,第4户为“空置”,其他户不是空置。)

思路:
  根据输入的情况计数即可

注意:

  1. printf()输出百分号时需要转义
printf("%%");

代码:(C++)

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    double e; //用电阈值
    int n,D; //观察期阈值
    cin>>n>>e>>D;
    int p=0,b=0;    //p为可能,b为空置
    for(int i=0; i<n; i++)
    {
        int k;
        int d = 0; //用电量少于e的天数
        cin>>k;
        for(int j=0; j<k; j++)
        {
            double m;
            cin>>m;
            if(m<e)
                d++;
        }
        if(k>D && d>k/2.0)
            b++;
        else if(d>k/2.0)
            p++;
    }
    
    printf("%.1f\%% ",p/1.0/n*100);
    printf("%.1f\%%",b/1.0/n*100);
    return 0;
}
发布了77 篇原创文章 · 获赞 20 · 访问量 5771

猜你喜欢

转载自blog.csdn.net/qq_42396168/article/details/105024951
今日推荐