傳送門
- 分割
- 題目描述
- 輸入描述
- 資料范圍:
- 輸出描述
- 樣例一
- 輸入
- 輸出
- 樣例二
- 輸入
- 輸出
- 提示
- 題目分析
- AC代碼
分割
- CMP
- 跳蛙
- 剪切
- 數學?
- 數學!
- 逃離
時間限制:1秒
空間限制:128M
題目描述
一只青蛙一張嘴, 兩只眼睛四條腿
兩只青蛙兩張嘴,四只眼睛八條腿
?
\cdots
?
——— 來自未來的ACM社團的破冰游戲玩起了數青蛙的游戲
這個游戲對于通過大腦來計算的🐾毛毛🐾同學來說太困難了,而對于用CPU計算的小T同學來說又太簡單了,
于是聰明的毛毛同學給小T同學出了一道跳蛙問題,以檢驗小T是否足夠智能,
跳蛙從起點 0 0 0 處出發,一共往前跳 n n n 次,其中跳蛙第 i i i 次跳的距離是 a i a_i ai?,問題是:跳蛙的總距離在超過 x x x 之前,一共落地了幾次,
輸入描述
第一行是空格隔開的兩個正整數 n n n 和 x x x,代表跳蛙的總彈跳次數和詢問的距離,
第二行給你 n n n 個空格隔開的正整數 a a a, 其中 a i a_i ai? 表示青蛙第 i i i 次彈跳的距離,
輸入格式如下:
n x
a1 a2 ... an
資料范圍:
- 1 ≤ n ≤ 100 1\leq n\leq 100 1≤n≤100
- 1 ≤ a i ≤ 100 1\leq a_i\leq 100 1≤ai?≤100
- 1 ≤ x ≤ 10000 1\leq x \leq 10000 1≤x≤10000
輸出描述
輸出跳蛙在總距離在超過 x x x 之前,一共落地了幾次,
樣例一
輸入
3 6
3 4 5
輸出
2
樣例二
輸入
4 9
3 3 3 3
輸出
4
提示
樣例一中:
- 跳蛙第一次落地是在起點 0 0 0 處
- 第一次彈跳距離是 3 3 3,第二次落地點是 3 3 3
- 第二次彈跳距離是 4 4 4,第三次落地點是 7 7 7,已經超出了 x = 6 x=6 x=6
- 第三次彈跳距離是 5 5 5,第四次落地點是 12 12 12,早已超出給定距離 6 6 6
因此跳蛙總彈跳距離超過 6 6 6 之前一共落地了 2 2 2 次 ( 0 0 0處和 3 3 3處)
題目分析
我們只需要模擬每次跳蛙的落地點,每次彈跳后判斷落地點是否在 [ 0 , x ] [0, x] [0,x] 范圍內
- 如果在,落地次數+1,彈跳模擬繼續
- 如果不在,直接停止模擬即可
AC代碼
#include <iostream>
using namespace std;
int main() {
int ans = 1; // 初始落點0在[0, x]范圍內
int n, x;
cin >> n >> x;
int now = 0; // 現在的位置
while (n--) {
int t;
cin >> t;
now += t; // 位置+此次的彈跳距離
if (now <= x) { // 還在[0, x]范圍內
ans++; // 落地次數+1
} else { // 已經超出了x
break; // 沒必要繼續模擬了
}
}
cout << ans << endl; // 輸出答案
return 0;
}
原創不易,轉載請附上原文鏈接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/120896948
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/332184.html
標籤:其他
