投币洗衣机
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5878 Accepted Submission(s): 1460
Problem Description
如今大学生的生活条件越来越好了,近期,内蒙某高校在每个寝室楼都添置了一台投币洗衣机。
小明作为经常参加训练的ACM队员,非常忙(Lan)碌(Duo),当然非常乐意把衣服丢给洗衣机解决啦。根据要洗的衣服数量,投币洗衣机每次需要投入2-4 枚硬币。
小明是一个非常容易出汗的男生,夏天就要到了,每天都要洗澡,所以也就有大量衣服需要洗。
小明是这么制定投币洗衣机计划的:当屯积的衣服数量大于等于a且小于b的时候,他就会马上全部拿去给洗衣机洗,并且投入2枚硬币;当屯积的衣服数量大于等于b且小于c的时候,他就会马上全部拿去给洗衣机洗,并且投入3枚硬币;当屯积的衣服数量大于等于c的时候,他就会马上全部拿去给洗衣机洗,并且投入4枚硬币。其他细节见样例。
现在知道,小明过去n 天每天换下的衣服数量v件,需要你帮忙计算出小明在过去这段时间洗衣服一共花了多少钱。
Input
输入包含多组测试数据。
每组数据第一行是4个正整数 n (1<=n<=10000) 、a 、b 、c (1<=a < b < c <=300 ),具体含义见题目描述。
每组数据第二行包含n个正整数,按顺序表示过去n天每天产生的衣服数量v(1<=v<=1000)。
Output
每组数据输出一个整数,表示小明过去n天中洗衣服一共花了多少钱。
每组输出占一行。
Sample Input
3 2 4 6
2 2 1
Sample Output
4
水题,注意下细节即可
代码
#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
#include<cstdio>
using namespace std;
int v[10005];
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int a,b,c,temp;
scanf("%d%d%d",&a,&b,&c);
for (int i = 1;i<=n;i++)
{
scanf("%d",&temp);
v[i]+=temp;
if (v[i]<a)
v[i+1]+=v[i];
}
int sum = 0;
for (int i = 1;i<=n;i++)
{
if (v[i] >= a && v[i] < b)
sum+=2;
if (v[i] >= b && v[i] < c)
sum+=3;
if (v[i] >= c)
sum+=4;
}
printf("%d\n",sum);
memset(v,0,sizeof(v));
}
}