给出一个正整数n,请数数有多少正整数k满足k的k次方 <=n
本地打表或者通过快速幂均可
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
ll qpow(ll a,ll n)
{
ll prot=1;
while(n){
if(n&1) prot=prot*a;
a=a*a;
n>>=1;
}
return prot;
}
int main()
{
ll n;
while(scanf("%lld",&n)==1){
//cout<<qpow(n,n)<<endl;
int i;
for(i=1;;i++){
if(i==16) {
break;
}
if(qpow(i,i)<=n) continue;
else break;
}
printf("%d\n",i-1);
}
}
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
//const LL modd = 1000000007;
const LL s[] = { 0, 1, 4, 27, 256, 3125, 46656, 823543, 16777216, 387420489, 10000000000, 285311670611, 8916100448256,
302875106592253, 11112006825558016, 437893890380859375};
int main() {
LL n;
// for(LL i = 1 ; i <= 21; i++) {
// LL t = i;
// for(LL j = 1; j < i; j++) {
// t *= i;
// }
// printf(" %lld,", t);
//
// }
while(cin>>n){
LL ans = 0;
for(LL i = 1; i <= 15; i++) {
if( s[i] <= n ) ans++;
else break;
}
cout << ans << endl;
}
return 0;
}