# what am i doing wrong here?

posted 4 years ago

euler 76 and 78 are very similar. i thought it would be a piece of cake. just have to use BigInteger instead of int

76

using BigInteger and adding one

this answer is correct

78

this returns 5997, and the System.out.println says 3000000

the correct answer is 55374

i tried changing

System.out.println(ways[j]);

to

System.out.println(ways[j].toString());

but get the same answer

i am guessing

if(ways[j].mod(limit) == BigInteger.ZERO)

is where the problem is, but not sure

76

using BigInteger and adding one

this answer is correct

78

this returns 5997, and the System.out.println says 3000000

the correct answer is 55374

i tried changing

System.out.println(ways[j]);

to

System.out.println(ways[j].toString());

but get the same answer

i am guessing

if(ways[j].mod(limit) == BigInteger.ZERO)

is where the problem is, but not sure

SCJP

Visit my download page

posted 4 years ago

I'd say you've nailed it.

`int`is a primitive type and can be compared using`==`. BigInteger is an object, for which the`==`operator compares references. You need to use the`equals`method instead.
posted 4 years ago

if(ways[j].mod(limit).equals(BigInteger.ZERO))

hmmm...i thought that would fix it but i get the same answer. i tried this also

if(ways[j].remainder(limit).equals(BigInteger.ZERO))

same result

hmmm...i thought that would fix it but i get the same answer. i tried this also

if(ways[j].remainder(limit).equals(BigInteger.ZERO))

same result

SCJP

Visit my download page

posted 4 years ago

that difference is correct. #76 wants all combinations of 2 numbers that equal 100(up to 99 + 1).

#78 includes the case of all coins in one stack(100)

i might try it using long, but my guess is the number will be too big

#78 includes the case of all coins in one stack(100)

i might try it using long, but my guess is the number will be too big

SCJP

Visit my download page

It is sorta covered in the JavaRanch Style Guide. |