这题啊,傻逼题
首先
因为想看看大家的思维和写法,并没有针对题目进行数据加强,所以基本上怎么暴力写都能过
其实这题是由一个很经典的题目扩展而来的。
即:你有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个瓶子换一瓶可乐,最多能换多少(直接输入输出
前置技能点都不点你看不懂的
然后没了。