HDU 6182 [A Math Problem] 打表
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6182
题目大意:给一个n,问有多少正整数k满足k的k次幂<=n
关键思想:k^k增长速度巨快,k=16时就超过1e18了。所以打个表,判断所处位置就ok了。
代码如下:
#include <iostream> #include <algorithm> using namespace std; typedef long long ll; ll ans[17]; ll pow(ll a,ll b){ ll x=1; for(int i=0;i<b;i++){ x*=a; } return x; } int main(){ ll n; bool flag; for(ll i=1;i<=15;i++){ ans[i]=pow(i,i); } while(~scanf("%lld",&n)){ flag=false; for(int j=1;j<=15;j++){ if(ans[j]>n){ printf("%d\n",j-1); flag=true; break; } } if(!flag)printf("15\n"); } return 0; }
边完善自己边认识自己