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

Автор abhinavsingh15682, история, 4 года назад, По-английски

While solving 1612C - Chat Ban I found something weird. I have submitted same code with C++14 and C++17,C++20. But it only was accepted with C++17.

C++14 :158761775

C++17 :158762654

C++20 :158762172

I tried to look for the reason online but could not find any.

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

»
4 года назад, скрыть # |
 
Проголосовать: нравится +6 Проголосовать: не нравится

contact your local exorcist asap

»
4 года назад, скрыть # |
 
Проголосовать: нравится -13 Проголосовать: не нравится

https://mirror.codeforces.com/contest/1612/submission/158779409

compare your solution with this modified solution of yours you will get it

or simply k*(k+1)/2 is not equal to (k*(k+1))/2

so in your code k*(k+1)/2 will give correct result if $$$k$$$ is $$$odd$$$ else it will give one less value then expected

»
4 года назад, скрыть # |
Rev. 2  
Проголосовать: нравится +5 Проголосовать: не нравится

i think it is because of precision issues, i fixed it by adding (long double) inside the sqrt function: 158781091