ceil((double)x/n); x <= 10^12 and n <10^6; can anyone provide a test case or something I got hacked many times but was unable to find a mistake
# | User | Rating |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3823 |
3 | Benq | 3738 |
4 | Radewoosh | 3633 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3390 |
10 | gamegame | 3386 |
# | User | Contrib. |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 157 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
9 | nor | 153 |
ceil((double)x/n); x <= 10^12 and n <10^6; can anyone provide a test case or something I got hacked many times but was unable to find a mistake
Name |
---|
I can give you a reason why it can be wrong: because of how doubles are stored (IEEE 754), they might not be accurate, and that can lead to inaccurate result
if you want ceil, then use
(x + n - 1) / n
is there any test case to show this i am unable to find one
it fails for bigger number like if you try to do 100000000000000001/100000000000000000 it will give you 1 directly but ceil of this should be 2
but test case allow 10^12 for x and 10^6 for n
You can try stress-testing. I believe
ceil()
will cause precision error by nature, regardless of the constraints.but if we give by this method ie (x+n-1)/n then wont it lead to overflows due to addition?
yes
then how does N8LnR2Nqf8Q4FN says to give (x+n-1)/n and not
ceil(double(x)/n)
I don't think any problem setter would be that evil.
Also, if you are afraid of overflow, you can try
x / n + (x % n != 0)
, although it requires more divisions, which is slower and uglier (but I guess it's easier to understand).And,
__int128
is also an option as well, you can have a look at it.