买糖果 C++题解

买糖果

内存限制: 256 MiB 时间限制: 1000 ms 标准输入输出 题目类型: 传统 评测方式: 文本比较

题目描述

题目描述

n 个糖果店,围成一圈。

店铺按顺时针顺序从 1 到 n 编号,n 号店铺与 1 号店铺相邻。

第 i 号店铺的单个糖果售价为 ai 元。

李华拿着 T 元钱去购买糖果,具体购买过程如下:

  1. 初始时,他位于 1 号店铺。
  2. 如果他现有的钱足够在当前店铺购买一个糖果,他就会立即购买一个糖果,否则他将不会在当前店铺购买糖果。随后,不论他是否在当前店铺购买糖果,他都会按顺时针顺序前往下一个店铺。
  3. 他将不断重复过程 ,直到剩余的钱在所有店铺都买不起糖果为止。

请问,最终李华一共购买到多少个糖果。

输入格式

第一行包含两个整数 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;
} 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值