五月的第二次考试——2018/05/15

所以,这两次的考试就是这么的近,也就隔了一天。
但是,今天的第一题特别的水,以至于我都AC了。但是,后面的题让我不得不想到昨天看到的笑话:

小明:老师,我不是不会做,而是这次的数学考试题目已经超出我的语文理解范围。
老师:这就是你考零分的理由?一边站着去。

所以,这次考试的题目,除了第一题外,剩下的都超出了我的语文理解范围。


第一题:就是一个卖资料的店,因为老板的数学不咋地,进了资料后没有剩下任何的钱。一本资料卖五元。而顾客会付5元,10元,20元。因为他进了货就没钱了,所以他只能拿前面顾客付的钱找后面顾客多给的钱。(注意:顾客的顺序不能换)

这题很简单。如果顾客付的是5元,那OK,之间收钱就好了。如果是10元,那也ok,只要看有没有5元可以找了,如果没有5元就输出“NO”,如果有就继续。当顾客付的是20元的时候,就有两种找钱方式,一种是10+5,还有一种是5+5+5。
因为五元既要找20元,还要找10元 的,所以如果是二十元,你能找10元的就尽量找,如果没有十元的再找5元的。
所以代码如下:

#include<bits/stdc++.h>
using namespace std;
int n,a[100100];
int x=0,y=0,z=0;
int main()
{
    cin>>n;
    for (int i=1;i<=n;i++) cin>>a[i];
    for (int i=1;i<=n;i++)
    {
        if (a[i]==5) x++;
        if (a[i]==10)
          if (x>0)
          {
            y++;
            x--;
          }
          else
          if (a[i]==10&&x==0)
          {
            cout<<"NO"<<endl;
            return 0;
          }
        if (a[i]==20)
          if (y>0)
          {
            z++;
            y--;
          }
          else if (x>1)
               {
                 x-=2;
                 z++;
               }
               else if (x<=1&&y==0)
               {
                cout<<"NO"<<endl;
                return 0;
               }
    }
    cout<<"YES"<<endl;
    return 0;
} 

有没有觉得哪里不对劲?
我的程序里面有一个错误,就是以为顾客付的是15元而不是20元,所以是x-=2,而不是x-=3,按道理来说应该是错的,但是,我还是AC了。这就是数据的事了,据说还有直接在总钱数里加加减减的,居然也能A。
不说了,再说刘老师就要把题目都改成多组数据了。

剩下的题目还有一些是关于数论的,不会啊。还有好多是暴力可以拿30分,但是正解写的很……。题解写的更玄幻。
不说了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值