Hello everyone, i want to present a very strange situation that happened with me on problem 1500B. I've tried to solve it by almost 3 hours, and cant figure out why my code was failing on test 11, and so i discovered that for some reason the problem was here:
ll lcm(ll n, ll m){
return n * (m / __gcd(n, m));
}
...
int n, m;
ll k;
scanf("%d %d %lld", &n, &m, &k);
ll l = lcm(n, m);
the variable l (lcm value) was given overflow (negative value), but if i change the variable n and m to ll (int64) it works as expected and i got acc. Is it right ? i mean, if i declare n and m as int32, but inside lcm i expect values as int64, this should be converted, and the return should not overflow as well, right ?
Here is my WA submission 111601427, and the accepted 111601468
Can anyone tell me why this is happening ? Thanks in advance.