官方题解
2026-02-23 00:31:54
发布于:江苏
14阅读
0回复
0点赞
题目大意
给定一个数组 ,将它无限复制得到新的数组 ,从前往后依次累加,找出第一次使得累加和超过 的位置。
解题思路
直接一个一个累加计算判断很明显是通过不了的。设 为数组 所有元素的和,于是可以 计算出可以用最多多少个 ,剩下的部分一定能被数组 中某一个前缀超过, 遍历判断即可。
参考答案
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 100010;
ll a[N];
int main(){
ll n;cin>>n;
ll sum=0;
for(int i=1;i<=n;i++){
cin>>a[i];
sum+=a[i];
}
ll x;cin>>x;
ll res=x/sum*n;
x%=sum;
for(int i=1;i<=n;i++){
res++;
x-=a[i];
if(x<0){
cout<<res<<endl;
return 0;
}
}
return 0;
}
全部评论 1
竟然被我猜出正解了

2026-02-23 来自 浙江
0











有帮助,赞一个