日期: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;
}
沒有留言:
張貼留言