1. C, Evgeni Pavlidis

/**
* ACM programming Contest WS 08/09
* UVa Status: accepted
* Run Time: 0.010
* @author Evgeni Pavlidis evgenipavlidis@yahoo.de
*/
#include <stdio.h>
#include <math.h>

int main()
{
long double p, n, result;
while(1)
{
scanf("%llf \n", &n);
scanf("%llf \n", &p);

result = exp( log(p) / n );
printf("%0.llf\n", result);

if(feof(stdin))
return 0;
}
}


2. C, ****


/**
* ACM programming Contest WS 08/09 "113 - Power of Cryptography"
* Accepted Run Time 0.000
* @author ****, Okt. 2008
* In Vorlesung besprochen..
*/

#include<math.h>
int main(){
  double n,p;
  while(scanf("%lf %lf",&n,&p)==2){
    printf("%.0lf\n",floor(pow(p,1.0/n)+0.5));}
  return 0;
}

3. Till Fischer, C

/*
 ============================================================================
 Name            : poc.c
 Author            : Till Fischer
 Description    : 113 - Power of Cryptography
 Language        : ANSI C
 Accepted        : yes
 Time            : 0.010
 ============================================================================
 */

#include <stdio.h>
#include <math.h>

int main(void){
  double n,p;
  while(scanf("%lf %lf",&n,&p)==2){
    printf("%.0lf\n",floor(pow(p,1.0/n)+0.5));}
  return 0;
}


4.  Peter Schnitzler, Java


/**
* ACM programming Contest WS 08/09
* UVa Status: accepted
* Run Time: 0.600
* @author Peter Schnitzler
*/
import java.math.BigInteger;
import java.util.Scanner;


public class Main
{

/**
* @param args
*/
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);

while (input.hasNextInt())
{
final int n = input.nextInt();
final BigInteger p = input.nextBigInteger();

if (p.compareTo(BigInteger.ONE) == 0)
{
System.out.println("1");
continue;
}

int up = 1000000000;
int down = 2;

while (true)
{
int mid = (up + down) >> 1;

BigInteger curP = new BigInteger(mid + "").pow(n);

if (p.compareTo(curP) == 0)
{
System.out.println(mid);
break;
}

if (p.compareTo(curP) < 0)
{
up = mid;
continue;
}

if (p.compareTo(curP) > 0)
down = mid;
}
}

}

}