超市里扫货 + 柜台结账题解 (牛客小白月赛61)

A 超市里扫货

原题链接:超市里扫货

个人觉得解这题需要注意两个方面。

  • 1、牛客一直都在考的问题:数据大小。
    在这题里,1<=v<=230 ,所以要用long long类型存储这个变量。
  • 2、 若放不下或者没有剩余货物,The__Flash 便会推着购物车去找柜台小姐姐结账

举个例子,如果购物车的容量为3, 第一个货物的体积为1 ,第二个货物的体积为3,第三个货物的体积为2那么这个人会进出超市三次,而不是两次
具体操作为:(1)将第一个货物放入购物车中。(2)将第二个货物放入购物车中,此时货物总体积大于购物车总容量,将第二个货物移出购物车,出超市。(3)将第二个货物放入购物车,将第三个货物放入购物车,货物体积大于购物车总容量,第三个货物移出购物车,出超市。(4)将第三个货物放入购物车,出超市。

代码

#include<iostream>
using namespace std;

const int N = 100010;
long long num=1,tmp;  //因为这个人进出超市进出超市的次数至少为1次,所以num初始化为1
long long a[N];

int main(){
    long long n,v;
    cin>>n>>v; 
    
    for(int i = 0;i<n;i++) scanf("%d",&a[i]);
    
    for(int i = 0;i<n;i++){
        tmp +=a[i];
        if(tmp>v){  
            num++;
            i--;
            tmp = 0;
        }
    }
       cout<<num;
        return 0;   
    }

B 柜台结账

原题链接:柜台转账

这题依然考察输入问题:a1,a2的值超过了int的取值范围,只能用string将它存储起来。
接下来就是本题的核心:判断a1,a2满足向个位偶数舍入的那个规则
不难发现,a1.a2的处理满足四舍六入的原则,所以可以把a2的取值分为4种情况

在这里插入图片描述
因此,很容易写出代码

代码

#include<iostream>
#include<cstring>
using namespace std;
string a,b;
int main(){
    cin>>a>>b;
    if(b[0]>'5') cout<<"Happy birthday to MFGG";
    else if(b[0]=='0') cout<<"PLMM";
    else if(b[0]<'5') cout<<"Happy birthday to YXGG";
    else{
        for(int i = 1;i<b.size();i++){  //这一步判断b是不是除了第一位,其他位都是0
            if(b[i]!='0') {
                cout<<"Happy birthday to MFGG";
                return 0;
               }
        }
    
     cout<<(((a.back()-'0')%2==0)? "Happy birthday to YXGG":"Happy birthday to MFGG");
    }
    
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值