Power of Cryptography
Time Limit: 1000MS | Memory Limit: 30000K | |
Total Submissions: 18408 | Accepted: 9292 |
题目大意 给出两个数n,k
要你求个数ans ans^n=k
关于题目中的数据范围全然能够用double完爆 不是必需用到二分+高精度
可是double类型尽管能表示10^(-307) ~ 10^308, (远大于题意的1<=p<10101这个范围),但仅仅能精确前16位,因此必须慎用
那么为了避免double对输入的数在运算过程中进行精确,那么我们必须让double的运算第一步就得到一个int(即小数点尾数全为0)
#include<iostream> #include<cstdio> #include<cmath> using namespace std; int main() { double n,m; while(cin>>n>>m) cout<<pow(m,1/n)<<endl; return 0; }
非常短有木有。
。
。。
。。
。