KiZamaDo17's blog

By KiZamaDo17, history, 12 months ago, In English

I attempted the D problem in JAVA 21 64bit with the simple logic of storing the remainder of a[i] in pairs along with their frequency in HashMap and check if (x-(a[i]%x)),(a[i]%y)) is already present, adding 1 to answer if it happens. I also make the remainder equal to x if it comes out to be zero.

Heres my solution

My Answer

but for some reason it fails the 12th test. I don't know what on God's Earth it is, but I then just convert the same logic to C++ and its accepted.

Where am I going wrong? What seems to be the problem here? Is there an alternative? A friend of mine suggested using a 2D array instead of a map an hence saving the trouble of creating pair class in JAVA but I could not fully grasp his concept. Please help me out here.

  • Vote: I like it
  • +1
  • Vote: I do not like it

| Write comment?
»
12 months ago, # |
  Vote: I like it 0 Vote: I do not like it

I don't know much about Java but it looks like your "pair" implementation such return a 64-bit integer since to hash it in a * M + b then M should be greater than b.

In addition, the answer may get larger than 32-bit integers so consider using 64-bit integers in this case.

  • »
    »
    12 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    I implemented all your suggestions and this is what is happening. When I use M in hashing function anything less than 64, it gives me a wrong asnwer at test case 12

    Using M=63 here

    and when I use M=64, it gives me a TLE at M=64 at test case 4

    When M is 64

    What to do now? Vladosiya any clues you can give mate?