用 zip 配对十种图书单价和购买数量,求加权总价。
OJ: noi_openjudge
题目 ID: ch0106-03
难度:入门
标签:数组模拟python
日期: 2026-07-30 23:01
题意
已知十种图书的单价与购买数量,计算总书费并保留一位小数。
思路
将单价放在 prices 中。zip(prices, counts) 按相同位置配对单价和数量,逐项相乘后求和。
代码
Python代码
python
prices = [28.9, 32.7, 45.6, 78.0, 35.0, 86.2, 27.8, 43.0, 56.0, 65.0]
counts = map(int, input().split())
total = sum(price * count for price, count in zip(prices, counts))
print(f"{total:.1f}")C++代码
cpp
#include <cstdio>
double a[] = {0, 28.9 , 32.7 , 45.6, 78 , 35 , 86.2 , 27.8, 43 , 56 , 65 };
double sum = 0;
int main(){
int i,t;
for(i=1;i<=10;i++){
scanf("%d",&t);
sum += t*a[i];
}
printf("%0.1lf\n",sum);
return 0;
}复杂度
固定十种图书,时间和额外空间复杂度均为
总结
对应位置的两组数据做加权和时,zip 能避免手写下标。