【HDOJ】A Math Problem(對pow()的理解)
阿新 • • 發佈:2018-04-20
題意 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 namespacestd; 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()的理解)