What is wrong with my code for long challenge problem Appy and Balloons?

long_challenge
oct18

#1

Problem Link

Previous solution link

My above solution is running for some cases i.e., it was partially accepted , I made a small change in the code in Line 54:
temp+=(Math.ceil( ((float) (C*-mid))/(float)B*));

changed to

temp=temp-(mid/B*)+A*;

After doing this I got AC for all cases

New solution link

Please can anyone tell me why is this happening


#2

In C/C++ , ceil() uses “double” type as its argument and returns “double” as well.Here, the value which is the argument of ceil() (c*-mid) can be as large as 10^18 which exceeds the range of “double”. Hence,ceil() returns unexpected value and you got WA for large numbers (The case is same in Java)


#3

I tried it for 10^18 in c++ it’s returning
1e+09 when i use ceil
and 1000000000 when i am using other approach


#4

Can you share your code?
Anyway,

#include <bits/stdc++.h>
using namespace std;

int main()

{

long double c=1000000000000000000.76;

cout << ceil(c) <<endl;

}

This won’t output 1000000000000000001. Instead will output 1000000000000000000 (1e+18)

PS: Don’t trust floating point numbers. They can’t be stored/represented accurately and they betray when you need them the most :confused: