CSUST OJ 2020

这题啊,傻逼题
首先
因为想看看大家的思维和写法,并没有针对题目进行数据加强,所以基本上怎么暴力写都能过

其实这题是由一个很经典的题目扩展而来的。

即:你有a个瓶盖,b个瓶盖能换一瓶可乐,问你最多能喝多少瓶可乐。

但这题稍微负责一些,因为瓶子和瓶盖换的新可乐,有一个瓶盖和瓶子,所以会相互影响。

所以我们每次算出瓶子和瓶盖分别能换多少可乐,然后再更新瓶子和瓶盖的数量就行了。

所以针对数据氛围,暴力就行啦

注意判断一下都为inf的情况哦,很明显是x或者y为1 或者x和y都为2

#include <bits/stdc++.h>
 
using namespace std;
int main() {
    int t;
    cin>>t;
    while(t--)
    {
        int x,y,a,b;
        cin>>x>>y>>a>>b;
        long long  ans=0;
        if (a<x&&b<y){
            cout<<"0"<<endl;continue ;
        }
        else 
        {
            if (x==1||y==1){
            cout<<"INF"<<endl;
            continue ;
        }
           else if (x==y&&x==2){
            cout<<"INF"<<endl;
            continue ;
        }
           else {
              while(a>=x||b>=y)
              {
                  // cout<<" ?"<<endl;
                  int x1=a/x;
                  int y1=b/y;
                  ans+=(x1+y1);
                  a%=x;
                  b%=y;
                  a+=(x1+y1);
                  b+=(x1+y1);

              }
            }
           cout<<ans<<endl;
        }
    }
    return 0;
}

然后就没了。。

至于有同学先学非循环写法的,建议先点一下前置技能点。

1 有a个瓶盖,x个瓶盖换一瓶可乐,最多能换多少(直接输入输出)

2 有a个瓶盖,b个瓶子,x个瓶盖和y个瓶子换一瓶可乐,最多能换多少(直接输入输出

前置技能点都不点你看不懂的

然后没了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值