题目描述
又是一年春暖花开,小爱与家人一起开车出游,在漫长的路途上,他开始播放自己的歌单以舒缓疲劳。
小爱的歌单中有𝑛n首歌,其中第 𝑖i 首歌的时长为 𝑡𝑖ti 分钟,这些歌将以循环的方式播放,即播放完第 𝑛n 首歌后,会继续播放第 11 首歌。
小爱出发那一刻起,从第 11 首歌开始循环播放整个歌单,请问当 𝑇T 分钟后到达目的地时,正在播放第几首歌?
输入格式
第一行,一个正整数𝑛n,表示歌单中曲目数
第二行,𝑛n个正整数𝑡1,𝑡2,...,𝑡𝑛t1,t2,...,tn,分别表示每首歌的时长
第三行,一个正整数𝑇T,表示开车时间
输出格式
输出到达目的地时,正在播放的歌曲编号。
数据范围
- 对于30%30%的数据,1≤𝑛≤10,1≤𝑡𝑖,𝑇≤1031≤n≤10,1≤ti,T≤103
- 对于60%60%的数据,1≤𝑛≤105,1≤𝑡𝑖,𝑇≤1081≤n≤105,1≤ti,T≤108
- 对于100%100%的数据,1≤𝑛≤105,1≤𝑡𝑖,𝑇≤10181≤n≤105,1≤ti,T≤1018
样例数据
输入:
5
3 6 2 4 5
24
输出:
2
输入:
5
3 6 2 4 5
20
输出:
5
详见代码:
#include <bits/stdc++.h>
using namespace std;
long long a[100005];
int main()
{long long n, t;long long sum = 0;cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];}cin >> t;for(int i = 1; i <= n; i++) {sum += a[i];if(sum >= t) {cout << i;return 0;}}t %= sum;if (t == 0){cout << n;return 0;}for (int i = 1; i <= n; i++) {t -= a[i];if (t <= 0) {cout << i << endl;break;}}return 0;
}