AVGPR last subtask is failing :/

april18

#1

My last subtask is failing in Java but the same approach is working completely fine in python. Help me in finding out the mistake please!
https://www.codechef.com/viewsolution/18320014


#2

It is due to overflow. Use appropriate data type.
e.g. test case -
1
100000
1 1 1 1 1 …
Your code gives 704982704 instead of 4999950000.

Your approach is working fine in python because python does not allow overflow.


#3

@vijju123 which problem used that large value,link please


#4

Correction :stuck_out_tongue:

Python does not allow overflow till \approx {10}^{7000}. Been there, done that, hence the knowledge xD


#5

This upper limit I didn’t knew. @vijju123 Thanks.


#6

I don’t think that’s correct @vijju123. The documentation clearly states “Integers have unlimited precision”


#7

Yes, that 7000 limit holds for float data type I see. If you try to execute-

a=(10.0)**7000

you will get an overflow error. And for some reason I feel float is the favorite data type of python xD. Yes, integers, I agree with you. Integers do have precision limited to your computer’s hardware capacity :stuck_out_tongue: (lets not throw unlimited here :stuck_out_tongue: ). For codechef I think it will be time limit though, instead of memory one.

The thing was, I see this is a general misconception in python where people try to store and manipulate numbers with as long as {10}^{9} digits just because of “unlimited”


#8

https://www.codechef.com/problems/FCTRL2
But I will recommend doing this problem without using python/ BigInt java or any similar library file.


#9

https://www.codechef.com/LTIME49/problems/TWONMS/ - this one. If you try doing brute force with python, thinking that there is no limit, you get NZEC here.


#10

But @vijju123 this question cannot be passed using Brute force. And without Brute force. This question does not require big nos.


#11

I cant find the question link, but one user tried to do something on lines of \frac{A*{2}^{(N+1)/2}}{B*2^{N/2}} and he got NZEC error. Just search this “twonm” on forum and you will see people using JAVA big integer library to solve it. I call that “Brute Force” since you are doing what the question said xD


#12

I tried doing brute force using python. I got 30 pts and TLE but did not got NZEC. https://www.codechef.com/viewsolution/18327886


#13

As long as we are working with integers no error is thrown e.g. writing (1000000)**1000 is working fine. Whereas writing (10.0)**1000 shows NZEC OverflowError: (34, ‘Numerical result out of range’)


#14

so twonm is most solved in june lunchtime and still interesting,nice:)