当前位置 博文首页 > Deco00ffcc的博客:“钱”老梗之小c的零花钱

    Deco00ffcc的博客:“钱”老梗之小c的零花钱

    作者:[db:作者] 时间:2021-09-20 19:22

    10012

    题目描述

    体育在中考地位越来越重要,为了鼓励小C同学进行体育锻炼,小C的爸爸制定了一个计划,用于鼓励小C进行体育锻炼。他把小C每天的体育锻炼时间进行统计(单位:分钟,是一个整数),小C每累计3天锻炼时间达到60分钟或者以上,就奖励小C零花钱,零花钱为这3天的锻炼总时间-170元(注意:每次锻炼不能重复计算)。但如果有一天小C没有参加锻炼(锻炼时间为0),则立刻终止奖励(这意味着后续的锻炼都无法获得奖励)。已知小C的锻炼数据,小C很需要零花钱,所以总是第一时间拿奖励的零花钱,请问小C能拿到多少钱?

    输入输出

    数据的第一行一个正整数n,表示小C参加锻炼的天数

    第二行是n个>=0的整数,表示小C第i天锻炼的时间(单位:分钟)

    输出

    零花钱数。

    其实这题又是在考察一维数组(熟悉我的人都知道我最擅长的也就是一维数组而已,不熟悉我的康康我的个人简介就OK)

    代码如下:

    #include<bits/stdc++.h>
    #include<iomanip>
    using namespace std;
    int a[100001],b[100001]={0},c=0,p=0;//定义比较大的数组切记要放在主函数外,a用于储存分钟数,b用于避免重复计算,c用于每三次的叠加,p用于存储零花钱总数并输出
    int main()
    {
    freopen("10012.in","r",stdin);
    freopen("10012.out","w",stdout);//这两行可以自行删除了
    int n,s=0;
    cin>>n;
    
    for(int i=1;i<=n;i++)
    {
    	cin>>a[i];
    	b[i]=1;
    }
    for(int i=1;i<=n-2;i++)
    {
    	if(a[i]>=60&&b[i]==1)//如果小c的锻炼达到60分钟并且没有被重复计算,可以累计分钟数并且计算零花钱数
    	{
    	s+=a[i];
    	b[i]=0;
    	c++;
    	if(c==3)
    	{
    		p=p+(s-170);
    		s=0;
    		c=0;
    	}
    	
    }
    	if(a[i]==0)break;//如果他今天没有锻炼,就不能计算零花钱了
    }
    cout<<p;
    return 0;
    }
    

    cs