Strange Situation on c++ long long type on CF

Правка en1, от beginner_boy, 2021-04-01 04:12:21

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.

Теги #c++ 17, int64

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
en1 Английский beginner_boy 2021-04-01 04:12:21 1016 Initial revision (published)