由于n的范围是(1<n<1000000000)
所以用素数定理
素数定理之处当x增大π(X)/(X/ lnX)≈1
所以这里可以用素数定理求位数 lg(n/ln n)+1由于给出的是10^n所以带入化简得
N – lg- lg(le(10))+1为所求
素数定理 请百度
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
double n,m;
while(cin>>n)
{
m=double(n-log10(n)-log10(log(10)));
//printf("%.0lf\n",m+1);
//cout<<(int)m+1<<endl;
printf("%d\n",(int)m+1);
}
return 0;
}