1e18 + 1 == 1e18 in C++
Разница между en2 и en3, 193 символ(ов) изменены
As the title, `1e18 + 1 == 1e18` in C++.↵

This is because the double type stores the first 53 binary bits of a number. So the number 1 will be ignored.↵

And most of submissions which fst on test 13 of problem C of edu round 187 are for this reason.


UPD: I collected some suggestions from the comments:↵

1. Use `1000000000000000001` (I do not suggest it because it is prone to errors.)↵
2. Use `(long long)(1e18) + 1`↵
3. Use `1e18L + 1`

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
en4 Английский XiangXunyi 2026-03-07 15:50:14 38 Add a suggestion that using `1'000'000'000'000'000'001LL`
en3 Английский XiangXunyi 2026-02-27 16:24:33 193
en2 Английский XiangXunyi 2026-02-26 10:43:28 7 Tiny change: 'irst 53 bits of a' -> 'irst 53 binary bits of a'
en1 Английский XiangXunyi 2026-02-26 10:41:21 268 Initial revision (published)