https://www.codechef.com/viewsolution/32703513

This is my link to the solution,please tell me what testcase i may be wrong?

For n=9 , it should be 0, you are printing 16. You are just missing the case when n is perfect square, you have to print 0.

1 is also a perfect square , the example gives -1 , i have realized my mistake . I am getting x, perfect square but not the smallest.

Then for n=4, it should be -1

You have changed the logic.

Which tc you were missing?

The solution I did first would give me a perfect square which on added to this number gives me a perfect square. But i didn’t knew that this number would be the smallest perfect square.

let’s take the number 15 , according to my first solution , i would get the answer as 49.

But if i added 1 to this number I will get 16 which is a perfect square i got on adding 1(a perfect square).

So the answer should be 1, but i got 49.

The problem is related to factors.

let the given number be n.

we have to take a number i as a perfect square and on addition it should give a square of a number j.

n+i*i=j*j;

Therefore, n=(j-i)*(j+i);

Now we have to check for the factors and minimize the value of j.

J would be minimized if we take the factors which are closer to the square root of n.

for example , we take the number 15.

15=1*(15) ,15=(3)*(5);

We will take the second prime factors ,so we get the value of j as 4.