买糖果
内存限制: 256 MiB 时间限制: 1000 ms 标准输入输出 题目类型: 传统 评测方式: 文本比较
题目描述
题目描述
n 个糖果店,围成一圈。
店铺按顺时针顺序从 1 到 n 编号,n 号店铺与 1 号店铺相邻。
第 i 号店铺的单个糖果售价为 ai 元。
李华拿着 T 元钱去购买糖果,具体购买过程如下:
- 初始时,他位于 1 号店铺。
- 如果他现有的钱足够在当前店铺购买一个糖果,他就会立即购买一个糖果,否则他将不会在当前店铺购买糖果。随后,不论他是否在当前店铺购买糖果,他都会按顺时针顺序前往下一个店铺。
- 他将不断重复过程 ,直到剩余的钱在所有店铺都买不起糖果为止。
请问,最终李华一共购买到多少个糖果。
输入格式
第一行包含两个整数 n,T。
第二行包含 n 个整数 a1,a2,a3,…,an。
输出格式
一个整数,表示一共购买到的糖果数量。
样例
输入样例1
复制3 38
5 2 5
输出样例1
复制10
输入样例2
复制5 21
2 4 100 2 6
输出样例2
复制6
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5 + 5;
int n, t, sum, ans;
int Min = INT_MAX;
int a[N];
signed main() {
scanf("%lld %lld", &n, &t);
for(int i = 1; i <= n; i++) {
scanf("%lld", &a[i]);
sum += a[i], Min = min(a[i], Min);
}
while(t >= Min) {
if(t >= sum) ans += t / sum * n, t %= sum;
for(int i = 1; i <= n; i++) {
if(t < Min) break;
if(t >= a[i]) t -= a[i], ans++;
}
}
printf("%lld", ans);
return 0;
}