uva oj 上的一题.
就是给个 n 1<=n<=200 和 p 1<=p<10^101求个 k 1<=k<=10^9 使得k^n=p.
一开始看到p竟然和这么大个,傻不拉几地想到用高精度表示,我去,还真写上了代码.......但是那里出了问题,小一点的数测试可以,数大了好像死循环了........
然后看其他人怎么解的,看到了浮点型表示及范围,还有个pow()函数,这些其实不太懂,就学习了.......其实感觉学到了不少(我想是自己知道的太少吧!)
1.十进制小数和二进制的互换.
2.计算机中浮点数的表示. 还有
3.浮点数的范围.
这样差不多理解了浮点数了.
所以p完全可以用double来存而不是用麻烦的高精度.
4.pow()函数.
既然有现成的函数,那么.....呵呵.
下面是看到别人的代码,大神,不解释.
#include#include int main(void){ int n; double p; while (scanf("%d %lf",&n,&p)!=EOF) { printf("%d\n",(int)(pow(p,1.0/n)+0.5)); //加个0.5应该是四舍五入 } return 0;}