熱門文章

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


沒有留言:

張貼留言