POJ-2109 Power of Cryptography (Double)

it2023-02-22  83

POJ-2109 Power of Cryptography (Double)

题意:给定 n , p n,p np已知 k n = p k^n=p kn=p,求 k k k 1 ≤ p ≤ 1 0 101 1\le p\le10^{101} 1p10101

思路:正解应该是二分 + + +高精度快速幂。 但是本题可以有个更快解法:用 d o u b l e double double − 1.7 e 308 ≤ d o u b l e ≤ 1.7 e 308 -1.7e^{308}\le double\le 1.7e^{308} 1.7e308double1.7e308,然后调用 p o w ( p , 1.0 / n ) pow(p,1.0/n) pow(p,1.0/n)即可,值得注意的是 d o u b l e double double精度最多有 16 − 17 16-17 1617位,后面的位数都会取0而导致精度缺失,但是本题的数据在前面几位不同才会导致答案不同,大数的后面位数不会有影响最终答案。

#include<iostream> #include<cstdio> #include<string> #include<cstring> #include<algorithm> #include<cmath> typedef long long ll; const int N=1e6+5; using namespace std; int main(){ double n,p; while(cin>>n>>p) cout<<pow(p,1/n)<<endl; }
最新回复(0)