Bug in codeforces c++ compiler?

Today I was solving one problem from codeforces past contests. And I found that codeforces and vscode are giving different output for same code.
Problem link is https://codeforces.com/problemset/problem/576/A
My submission link is https://codeforces.com/contest/576/submission/93032729
Codeforces is showing wrong answer on test case 2.

Annotation 2020-09-17 151226

But vscode and other reliable online compilers are giving output same as of jury’s.
Codechef IDE


Can anybody tell me why codeforces is giving different output for same code ? Is this bug or Am I missing something.

Precision error for sqrt() function may be the case.

1 Like

Thanks… sqrt() function was creating problem. But why only on codeforces, sqrt() function was creating problem?

1 Like

It’s because sqrt() returns double and the way these floats are stored in the bits create precision error while doing direct comparison with ==.

There are many problems based on the precision only.
For a fun activity you can run the following program. It’ll print 0 in C++.
double a = 0.1;
double b = 0.2;
cout << ((a+b) == 0.3);

You can learn more about it on google.
Float representation
Gfg article


Ok, now I understand. I will take care of this thing in future. Thanks for help

1 Like

Np. I was unaware of this thing for a long time.

For comparison, suppose if you want to check if a equals b, then rather than doing plain a == b, you can check if their absolute difference is less than a very minimal quantity, say EPS = 1e^-6. So basically it’s same as abs(a-b) < EPS.

And you can enable all warnings in your working environment to remind you for the same. Specifically just add -Wall or -Wfloat-equal to your VSCode settings and if you are using CodeRunner extenstion, then to its running command. (Y)