题目链接:Codeforces - Berland Fair
因为每次mod一个比自己小的数字,值至少减去一半。
所以我们暴力循环即可。
AC代码:
#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+10;
int n,s,a[N],sum,res,k,vis[N];
signed main(){
cin>>n>>s; k=n;
for(int i=1;i<=n;i++) scanf("%lld",&a[i]),sum+=a[i];
while(s){
res+=(s/sum*k),s%=sum; int flag=0;
for(int i=1;i<=n;i++){
if(vis[i]) continue;
if(s>=a[i]) s-=a[i],res++,flag=1;
else vis[i]=1,k--,sum-=a[i];
}
if(!flag) break;
}
cout<<res;
return 0;
}