1. 程式人生 > >PAT Basic 1053

PAT Basic 1053

格式 problem ups space 整數 line 其他 pro 小數

1053 住房空置率

在不打擾居民的前提下,統計住房空置率的一種方法是根據每戶用電量的連續變化規律進行判斷。判斷方法如下:

  • 在觀察期內,若存在超過一半的日子用電量低於某給定的閾值 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 #include<iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int d,n,k,ans1 = 0, ans2 = 0;
 8     double e, result1, result2,m;
 9     scanf("%d %lf %d",&n, &e, &d);
10     for( int i = 0; i < n; i++){
11         scanf("%d",&k);
12         if( k <= d){
13 int num = 0; 14 for( int j = 0; j < k; j++){ 15 scanf("%lf",&m); 16 if( m < e) 17 num++; 18 } 19 if( num > k/2){ 20 ans1++; 21 } 22 } 23 else{ 24 int num = 0; 25 for( int j = 0; j < k; j++){ 26 scanf("%lf",&m); 27 if( m < e) 28 num++; 29 } 30 if( num > k/2) 31 ans2++; 32 } 33 } 34 result1 = ans1/(double)n*100; 35 result2 = ans2/(double)n*100; 36 printf("%.1lf%% %.1lf%%",result1,result2); 37 return 0; 38 }

PAT Basic 1053