1205. ক্রিপ্টোগ্রাফির ক্ষমতা

 

একটা পূর্ণসংখ্যা n (n ³ 1) এবং p (p ³ 1) দেওয়া আছে। এমন একটা প্রোগ্রাম লিখতে হবে যা , অর্থাৎ p এর ধনাত্বক n - তম মূল দেখাবে।

 

ইনপুট

দুটো পূর্ণসংখ্যা n এবং p (1 £ n £ 300, 1 £ p < 10101). ইনপুট এমনভাবে দেওয়া হবে যাতে করে উত্তর সব সময় পূর্ণ সংখ্যা হবে অর্থাৎ k এমন পুর্ণসংখ্যা যেন kn = p

 

আউটপুট

এর মান k দেখাতে হবে যেন  kn = p হয়।

 

উদাহরণ

ইনপুট

7 4357186184021382204544

 

আউটপুট

1234

 

সমাধান

গাণিতিক

 

অ্যালগোরিদম অ্যানালাইসিস

আমরা জানি  =  =  = n, p আর k এর যে মান দেওয়া আছে তাতে তাদের মান রাখার জন্যে double ব্যবহার করা যায়। এর মান বের করি. C তে একে লেখা যায় এই ভাবে exp(log(p)/n).

 

উদাহরণ

সমস্যাটিতে যে উদাহরণ দেওয়া আছে তাতে  = 1234.

 

অ্যালগোরিদম বাস্তবায়ন

n আর p এর মান পড়ি, তারপর উপরের নিয়মে এর মান বের করি।

 

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

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

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

 

জাভাতেঃ

 

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));

  }

}