HDOJA Math Problem(对pow()的理解)

Posted som_nico

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDOJA Math Problem(对pow()的理解)相关的知识,希望对你有一定的参考价值。

A Math Problem

http://acm.hdu.edu.cn/showproblem.php?pid=6182

题意:输入一个n,问有多少个k的k次幂<=n(k=1,2,3...)

思路:不能用pow。因为double pow( double x, double y );x不能为负数且y为小数,或者x为0且y小于等于0,返回幂指数的结果。

   pow()是用数值逼近的方法给出的,并不保证严格精确,执行效率也不高。

   于是就用循环写了k的k次,顺手打了个表发现16的16就满足了题里数据范围。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[20]={0,1,4,27,256,3125,46656,823543,16777216,387420489,10000000000,285311670611,8916100448256,302875106592253,11112006825558016,437893890380859375}, i;
int main()
{
    ll n;
    while(cin >> n)
    {
        int sum = 0;
        for( i = 1; i < 16; i++)
        {
            if(n >= a[i])
                sum++;
            if(n < a[i])
                break;
        }
        cout << sum << endl;
    }

}

 

以上是关于HDOJA Math Problem(对pow()的理解)的主要内容,如果未能解决你的问题,请参考以下文章

Problem 16

JavaScript Math 对象

为啥 JavaScript 中的 Math.pow()(有时)不等于 **?

Python问题 pow(x,y)和math pow(x,y的区别?

Math.pow

Python中**pow()和math.pow()的区别