【第二期测试】冬眠

题目描述:

麻雀帕西和青蛙弗洛格是好玩伴,它们经常一起比赛唱歌。但冬天来了,青蛙弗洛格 冬眠了,它的睡眠深度是 D。麻雀帕西觉得好无聊,于是它想办法要唤醒弗洛格。麻雀帕 西只会唱 N 首歌,第 i 首歌的音量是 Si。每听完一首歌,青蛙弗洛格的睡眠深度就会减少, 减少的值等于它听到的歌的音量。当青蛙弗洛格的睡眠深度大于 0 的时候,它会继续冬眠, 当睡眠深度小于或者等于 0 时,它就会被唤醒了。麻雀帕西会从第 1 首歌开始唱,唱完第 1 首歌后如果弗洛格还没醒就接着唱第 2 首歌,如果唱完第 2 首歌弗洛格还没醒就接着唱 第 3 首歌,依次类推,如果唱完第 N 首歌后弗洛格还没醒,那么麻雀帕西又重新从第 1 首 歌开始唱,就像循环播放音乐一样,一直到青蛙弗洛格被唤醒为止,那么麻雀帕西总共唱 了多少首歌?

输入格式:

第一行,两个整数: D 和 N。 

第二行,N 个整数,空格分开,第 i 个整数就是第 i 首歌的音量 Si。

输出格式:

一个整数,麻雀帕西总共唱了多少首歌后,弗洛格会被唤醒?

样例输入:
【样例输入1】
13 3
5 2 4

【样例输入2】
3 3
5 2 4

【样例输入3】
21 3
2 1 3
样例输出:
【样例输出1】
4
(麻雀帕西唱完第 1 首歌后,青蛙弗洛格睡眠深度变成8,麻雀帕西唱完第 2 首歌后,青蛙弗洛格睡眠深度变成6,麻雀帕西唱完第 3 首歌后,青蛙弗洛格睡眠深度变成2,麻雀帕西再次唱完第 1 首歌后,青蛙弗洛格睡眠深度变成-3,青蛙弗洛格会被唤醒。)

【样例输出2】
1
(麻雀帕西唱完第 1 首歌后,青蛙弗洛格睡眠深度变成-2,青蛙弗洛格会被唤醒。)

【样例输出3】
11
提示:

【数据规模】

对 80%的数据,1 ≤ D ≤ 10000,1 ≤ N ≤ 50,1 ≤ Si ≤ 100。 

另外 20%的数据,1 ≤ D ≤ 2000000000,1 ≤ N ≤ 50,1 ≤ Si ≤ 3。

时间限制: 1000ms
空间限制: 256MB

这道题我们就需要运用一些数学知识来优化程序。

代码实现:
#include<bits/stdc++.h>
using namespace std;
int n,m,a[101],cnt,i=1,sum;
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++)cin>>a[i],sum+=a[i];
	cnt+=(n/sum)*m;
	n-=(n/sum)*sum;
	while(n>0){
		n-=a[i];
		cnt++,i++;
		if(i>m)i=1;
	}
	cout<<cnt;
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值