1. 程式人生 > >【HDOJ】A Math Problem(對pow()的理解)

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

題意 hdu pan 打了 AC 輸入 show color 執行效率

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()的理解)