Блог пользователя harshilgoel

Автор harshilgoel, 10 лет назад, По-английски

http://codeforces.net/contest/460/submission/7541409

When i run the code on my machine, it gives the correct output whereas here it shows different

  • Проголосовать: нравится
  • -19
  • Проголосовать: не нравится

»
10 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

First, pow(x, y) on GNU C++ 4.7 compiler calculates something like with help of Taylor series. It is not 100% accurate, for example, pow(5, 2) may return something like 25.0000000000001 or 24.9999999999999. So you can write your own function that calculates xy for integer x and y, or you can use round function. Also some C++ compilers provide overload pow(double, long long), which will work as intended, because it is binary exponentiation and double type stores integers less than 253 without errors.

Second, you declare d as int, but 104·815 + 104 > 109, so overflow will happen.

And third, you don't check, whether d < 109.

AC: 7545312