计算书费

GitHub跳转原题关系图返回列表

用 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;
}

复杂度

固定十种图书,时间和额外空间复杂度均为 O(1)O(1)

总结

对应位置的两组数据做加权和时,zip 能避免手写下标。