1205. Сила криптографии

 

По заданным целым значениям n ³ 1 и p ³ 1 вычислить значение , положительный  n - ый корень числа p. Известно, что всегда существует такое целое k, что kn = p.

 

Вход. Состоит из двух чисел n и p (1 £ n £ 300, 1 £ p < 10101). Известно, что всегда существует такое целое k (1 ≤ k ≤ 109), что kn = p.

 

Выход. Вывести значение , то есть такое k, что kn = p.

 

Пример входа

Пример выхода

7 4357186184021382204544

1234

 

 

РЕШЕНИЕ

математика

 

Анализ алгоритма

Известно, что  =  =  = . В соответствии с ограничениями на числа n, p и k достаточно использовать тип double для объявления этих переменных и вычислить значение . Что в языке Си будет записано как exp(log(p)/n).

 

Пример

Для приведенного теста   = 1234.

 

Реализация алгоритма

Читаем значения n и p, вычисляем и выводим .

 

scanf("%lf %lf",&n,&p);

res = exp(log(p)/n);

printf("%.0lf\n",res);

 

Java реализация

 

import java.util.Scanner;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    double n = con.nextDouble();

    double p = con.nextDouble();

    double res = Math.pow(p,1/n);

    System.out.println((int)(res+0.5));

  }

}

 

Python реализация

Реализация при помощи формулы  = .

 

import math

n, p = map(int,input().split())

res = int(math.exp(math.log(p)/n) + 0.00001)

print(res)

 

Реализация при помощи формулы  = .

 

import math

n, p = map(int,input().split())

res = int(p ** (1.0/n) + 0.00001)

print(res)