I was doing a problem in which you are given a number **P** and a number **N**. You have to find a number **K** such that K^N is equal to P.

CONSTRAINTS ARE : 1 ≤ n ≤ 200, 1 ≤ p < 10^101

The python code that got AC :

```
while True:
try:
n = int(input())
p = int(input())
print(round(p**(1/n)))
except:
break
```

Why do I have to use the round function why can't I use ceil or floor?

When should I use round?

These kinds of questions cost me a lot of WAs. Can someone tell me how to deal with these kinds of questions?

My guess would be that

`round`

is more accurate than`ceil`

or`floor`

since`round`

rounds to the nearest integer. However, to be safe, I wouldn't use`round`

or any floating-points here at all. Instead, you should do binary search on`k`

in order to find the exact integer answer. This requires using big integers, but big integers are built into Python anyway and it does not give you the precision problems that floating-points will give you.Yeah, I thought of binary search but I was confused why the round function is giving the AC and not the ceil function. Lesson learnt I will use binary search in these types of problems from now on.