You are given a positive integer n, please count how many positive integers k satisfy k^k≤n.
Input
There are no more than 50 test cases.
Each case only contains a positivse integer n in a line.
1≤n≤10^18
Output
For each test case, output an integer indicates the number of positive integers k satisfy k^k≤n in a line.
Sample Input
1
4
Sample Output
1
2
大致题意:告诉你n的值,让你求出最大的k满足k^k<=n。
思路:k肯定小于等于15,所以从15开始遍历一遍,用快速幂即可。
代码如下
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
#define LL long long
LL kpow(LL x,LL n)
{
LL res=1;
while(n>0)
{
if(n & 1)
res=(res*x);
x=(x*x);
n >>= 1;
}
return res;
}
int main()
{
LL n;
while(scanf("%lld",&n)!=EOF)
{
for(int k=15;k>=1;k--)
{
if(kpow(k,k)<=n)
{
printf("%d\n",k);
break;
}
}
}
return 0;
}