1. 程式人生 > >Educational Codeforces Round 53 (Rated for Div. 2) D. Berland Fair

Educational Codeforces Round 53 (Rated for Div. 2) D. Berland Fair

題意:一個人  有T塊錢 有一圈商店 分別出售 不同價格的東西  每次經過商店只能買一個  並且如果錢夠就必須買 

這個人一定是從1號店開始的!(比賽的時候讀錯了題,以為隨意起點。。。)問可以買多少個

思路:這個人有T塊錢  走一圈之後可以買num個 花了sum塊錢 那麼走第二圈的時候 能買的東西是一圈的子集

T/sum 表示還能夠執行多少次買東西買完之後T%=sum繼續遞迴上述步驟  直到 T=0||num=0 也就是沒錢或者 一個都

買不起

參考:https://blog.csdn.net/STcyclone/article/details/83418853#1073C_Vasya_and_Robot_69 大佬的部落格

include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[300000];
int main(){
int  n;ll t;
cin>>n>>t;
for(int i=0;i<n;i++){
	scanf("%d",&a[i]);
}
ll ans=0;
while(t){
	ll sum=0;
	ll num=0;
   for(int i=0;i<n;i++){
	   
	   if(t>=a[i])t-=a[i],sum+=a[i],num++,ans++;
   }
    if(!num)break;
	   ans+=t/sum*num;
	   t%=sum;

}
cout<<ans<<endl;

}