解题思路

这是一道简单的购物计算题目,主要思路如下:

  1. 数据存储:

    • 使用数组存储每种面包的价格
    • 使用结构体存储购买记录(面包种类和数量)
  2. 计算步骤:

    • 读入面包种类数n和每种面包的价格
    • 读入购买记录数m
    • 读入m条购买记录
    • 根据每条记录计算总价
  3. 注意事项:

    • 数组下标从0开始,而输入的面包种类从1开始
    • 需要使用long类型存储总价,防止溢出

代码

#include <iostream>
using namespace std;

struct Purchase {
    int type;  // 面包种类
    int count; // 购买数量
};

int main() {
    int n;
    cin >> n;
    
    // 读入每种面包的价格
    int prices[101] = {0};
    for(int i = 0; i < n; i++) {
        cin >> prices[i];
    }
    
    // 读入购买记录数
    int m;
    cin >> m;
    
    // 计算总价
    long total = 0;
    for(int i = 0; i < m; i++) {
        int type, count;
        cin >> type >> count;
        total += prices[type-1] * count;
    }
    
    cout << total << endl;
    return 0;
}
import java.util.Scanner;

public class Main {
    static class Purchase {
        int type;  // 面包种类
        int count; // 购买数量
        
        Purchase(int type, int count) {
            this.type = type;
            this.count = count;
        }
    }
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        // 读入面包种类数
        int n = sc.nextInt();
        
        // 读入每种面包的价格
        int[] prices = new int[101];
        for(int i = 0; i < n; i++) {
            prices[i] = sc.nextInt();
        }
        
        // 读入购买记录数
        int m = sc.nextInt();
        
        // 计算总价
        long total = 0;
        for(int i = 0; i < m; i++) {
            int type = sc.nextInt();
            int count = sc.nextInt();
            total += prices[type-1] * count;
        }
        
        System.out.println(total);
    }
}
n = int(input())
jiage = list(map(int,input().split()))
m = jiage[-1]
summary = 0
for i in range(m):
    num = list(map(int,input().split()))
    summary += jiage[num[0]-1]*num[1]
print(summary)

算法及复杂度

  • 算法:简单遍历计算
  • 时间复杂度: - 其中 为购买记录数
  • 空间复杂度: - 其中 为面包种类数