1e18 + 1 == 1e18 in C++
Difference between en2 and en3, changed 193 character(s)
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`

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en4 English XiangXunyi 2026-03-07 15:50:14 38 Add a suggestion that using `1'000'000'000'000'000'001LL`
en3 English XiangXunyi 2026-02-27 16:24:33 193
en2 English XiangXunyi 2026-02-26 10:43:28 7 Tiny change: 'irst 53 bits of a' -> 'irst 53 binary bits of a'
en1 English XiangXunyi 2026-02-26 10:41:21 268 Initial revision (published)