TL了好多遍,不知道哪里出的问题,求大佬指出:
附错误代码:
#include<iostream>
#include<cstdio>
using namespace std;
int x, y, a, b;
int T;
int main()
{
scanf("%d", &T);
for(int t = 0; t < T; t++)
{
scanf("%d%d%d%d", &x, &y, &a, &b);
unsigned long long ans = 0;
int mark = 0;
while(!mark && (a >= x || b >= y))
{
if((a / x + a % x ) >= x || (b / y + b % y) >= y)
{
mark = 1; /*INF*/
break;
}
int p = a / x + b / y;
int t1 = a % x;
int t2 = b % y;
ans += p;
a = t1 + p;
b = t2 + p;
}
if(mark == 1)
printf("INF\n");
else
printf("%d\n",ans);
}
}
附正确代码:
#include<iostream>
#include<cstdio>
using namespace std;
int x, y, a, b;
int T;
int main()
{
scanf("%d", &T);
for(int t = 0; t < T; t++)
{
scanf("%d%d%d%d", &x, &y, &a, &b);
int ans = 0;
int mark = 0;
while(a >= x || b >= y)
{
int now_a = a, now_b = b;
if(a >= x)
{
int p = a/x;
ans += p;
a = a%x + p;
b += p;
}
if(b >= y)
{
int p = b/y;
ans += p;
b = b%y + p;
a += p;
}
if(a >= now_a && b >= now_b)
{
mark = 1;
break;
}
}
if(mark == 1)
printf("INF\n");
else
printf("%d\n",ans);
}
}