置頂

我的 VPython 教學文件 (HackMD 版本)

VPython 教學文件目錄 安裝及測試 基本語法 等速度直線運動 自由落下 終端速度 水平抛射 使用For迴圈計算水平抛射資料 斜向抛射 圓周運動 簡諧運動 單擺 木塊彈簧系統分離 重力及簡諧 行星運動 相疊木塊 雙重簡諧運動 一維彈性碰撞 ...

熱門文章

2025年4月14日 星期一

ZeroJudge 解題筆記:j352. 開心農場 (Farm)

作者:王一哲
日期:2025年4月14日



ZeroJudge 題目連結:j352. 開心農場 (Farm)

解題想法


依序讀取資料並判斷是否能開花即可。

Python 程式碼


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

for line in sys.stdin:
    n = int(line)  # 週數
    rain = list(map(int, input().split()))  # 雨量
    sun = list(map(int, input().split()))  # 日照
    R, S = map(int, input().split())  # 所需總雨量、日照
    tr, ts, state = 0, 0, False  # 累積的雨量、日照、是否開花
    for i, (r, s) in enumerate(zip(rain, sun), start=1):
        tr += r; ts += s  # 更新累積的雨量、日照
        if tr >= R and ts >= S:  # 達到開花條件,印出 i+1,中止迴圈
            print(i+1); state = True; break
    if not state: print(-1)  # 不能開花,印出 -1


C++ 程式碼


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

int main() {
    int n;  // 週數
    while(scanf("%d", &n) != EOF) {
        int rain[n], sun[n];  // 雨量,日照
        for(int i=0; i<n; i++) scanf("%d", &rain[i]);
        for(int i=0; i<n; i++) scanf("%d", &sun[i]);
        int R, S, tr = 0, ts = 0;  // 所需總雨量、日照、累積的雨量、日照
        scanf("%d %d", &R, &S);
        bool state = false;  // 是否開花
        for(int i=0; i<n; i++) {
            tr += rain[i]; ts += sun[i];  // 更新累積的雨量、日照
            if (tr >= R && ts >= S) {  // 達到開花條件,印出 i+2,中止迴圈
                printf("%d\n", i+2); state = true; break;
            }
        }
        if (!state) printf("-1\n");  // 不能開花,印出 -1
    }
    return 0;
}


沒有留言:

張貼留言