UVa 113 : Power of Cryptography
問題リンク:Power of Cryptography
問題概要:
n,p (p<= 10^101)が与えられる
k^n = p となるような k を求めよ(k <= 10^9)
解法:
pがかなり大きいが、doubleでなんとかなるみたい
k^n = p より k = n√p (つまり、p^(1/n))
または
k^n = p より
log(k)p = n
log p/log k = n
log p = n log k
log p / n = log k
e^(log p / n) = k
としてkを求める
コード:
#include<cstdio> #include<iostream> #include<cmath> #include<iomanip> using namespace std; int main() { double n,p; while(cin >> n >> p) { printf("%0.lf\n",exp(log(p)/n)); //printf("%0.lf\n",pow(p,1/n)); } return 0; }