A Math Problem
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1632 Accepted Submission(s): 580
Problem Description
You are given a positive integer n, please count how many positive integers k satisfy
kk≤n
.
Input
There are no more than 50 test cases.
Each case only contains a positivse integer n in a line.
1≤n≤1018
Each case only contains a positivse integer n in a line.
1≤n≤1018
Output
For each test case, output an integer indicates the number of positive integers k satisfy
kk≤n
in a line.
Sample Input
1 4
Sample Output
1 2
Source
想法:快速幂+暴力过
代码:
#include<stdio.h>
#include<string.h>
#include<math.h>
typedef long long LL;
LL pow(LL a,int b)
{
LL ans=1,base=a;
while (b>0)
{
if (b%2==1)
ans=base*ans;
base=base*base;
b/=2;
}
return ans;
}
int main()
{
long long n;
while(scanf("%lld",&n)!=EOF)
{
long long i,k;
for(i=15;i>=1;i--)
{
if(pow(i,i)<=n)
{
k=i;
break;
}
}
printf("%lld\n",k);
}
return 0;
}