按年龄上界分类计数,再除以总人数输出四组百分比。
OJ: noi_openjudge
题目 ID: ch0106-05
难度:入门
标签:模拟分类讨论python
日期: 2026-07-30 23:01
题意
将患者年龄分为
思路
从小到大判断年龄上界即可确定唯一分组。记录四组人数后,用 count * 100 / patient_count 计算比例并格式化为两位小数。
代码
Python代码
python
patient_count = int(input())
ages = map(int, input().split())
groups = [0, 0, 0, 0]
for age in ages:
if age <= 18:
groups[0] += 1
elif age <= 35:
groups[1] += 1
elif age <= 60:
groups[2] += 1
else:
groups[3] += 1
for count in groups:
print(f"{count * 100 / patient_count:.2f}%")C++代码
cpp
#include <cstdio>
int n;
int age[205]={0};
int main(){
int i,t;
scanf("%d",&n);
for (i=1;i<=n;i++){
scanf("%d",&t);
age[t]++;
}
int a,b,sum;
a = 0,b=18,sum=0;
for(i=a;i<=b;i++){
sum += age[i];
}
printf("%0.2lf%%\n",sum*1.0 / n * 100);
a = 19,b=35,sum=0;
for(i=a;i<=b;i++){
sum += age[i];
}
printf("%0.2lf%%\n",sum*1.0 / n * 100);
a = 36,b=60,sum=0;
for(i=a;i<=b;i++){
sum += age[i];
}
printf("%0.2lf%%\n",sum*1.0 / n * 100);
a = 61,b=200,sum=0;
for(i=a;i<=b;i++){
sum += age[i];
}
printf("%0.2lf%%\n",sum*1.0 / n * 100);
return 0;
}复杂度
时间复杂度为
总结
连续区间分类时,按边界递增的 if / elif 链最容易保证不重不漏。