码迷,mamicode.com
首页 > 其他好文 > 详细

【HDOJ】A Math Problem(对pow()的理解)

时间:2018-04-20 20:44:27      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:数据   ace   nbsp   main   思路   break   小数   std   def   

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;
    }

}

 

【HDOJ】A Math Problem(对pow()的理解)

标签:数据   ace   nbsp   main   思路   break   小数   std   def   

原文地址:https://www.cnblogs.com/Kohinur/p/8893174.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!