熱門文章

2025年6月15日 星期日

ZeroJudge 解題筆記:o922. 年貨大街 (Market)

作者:王一哲
日期:2025年6月15日


ZeroJudge 題目連結:o922. 年貨大街 (Market)

解題想法


依序讀取商品編號及質量,計算總金額即可。

Python 程式碼


使用時間約為 30 ms,記憶體約為 3.3 MB,通過測試。
import sys

for line in sys.stdin:
    n = int(line)  # n 款商品
    ps = [0] + list(map(int, input().split()))  # 各商品每公克價格,配合從1開始編號開頭加 0
    total = 0  # 總金額
    while True:  # 無窮迴圈
        x, g = map(int, input().split())  # x 商品買 g 公克
        if x == 0 and g == 0: break  # x, g 都是 0,中止迴圈
        total += ps[x]*g  # 更新 total
    print(total)

使用時間約為 25 ms,記憶體約為 3.3 MB,通過測試。
import sys

for line in sys.stdin:
    n = int(line)  # n 款商品
    ps = [0] + list(map(int, input().split()))  # 各商品每公克價格,配合從1開始編號開頭加 0
    total = 0  # 總金額
    x, g = -1, -1  # x 商品買 g 公克
    while x != 0 and g != 0:  # x, g 都是 0,中止迴圈
        x, g = map(int, input().split())  # x 商品買 g 公克
        total += ps[x]*g  # 更新 total
    print(total)


C++ 程式碼


使用時間約為 2 ms,記憶體約為 88 kB,通過測試。
#include <cstdio>
using namespace std;

int main() {
    int n;  // n 款商品
    while(scanf("%d", &n) != EOF) {
        int ps[n+1] = {0}, total = 0;  // 各商品每公克價格,配合從1開始編號開頭加 0;總金額
        for(int i=1; i<=n; i++) scanf("%d", &ps[i]); 
        while(true) {  // 無窮迴圈
            int x, g; scanf("%d %d", &x, &g);  // x 商品買 g 公克
            if (x == 0 && g == 0) break;  // x, g 都是 0,中止迴圈
            total += ps[x]*g;  // 更新 total
        }
        printf("%d\n", total);
    }
    return 0;
}

使用時間約為 2 ms,記憶體約為 88 kB,通過測試。
#include <cstdio>
using namespace std;

int main() {
    int n;  // n 款商品
    while(scanf("%d", &n) != EOF) {
        int ps[n+1] = {0}, total = 0;  // 各商品每公克價格,配合從1開始編號開頭加 0;總金額
        for(int i=1; i<=n; i++) scanf("%d", &ps[i]); 
        int x = -1, g = -1;  // x 商品買 g 公克
        while(x != 0 && g != 0) {  // x, g 都是 0,中止迴圈
            scanf("%d %d", &x, &g);  // x 商品買 g 公克
            total += ps[x]*g;  // 更新 total
        }
        printf("%d\n", total);
    }
    return 0;
}


沒有留言:

張貼留言