2 条题解

  • 2
    //这题要用数学知识来解,这样做最方便
    //首先,我们要算n^n的位数,那么我们要想到10^?的位数怎么求
    //比如10^2=100,是两位,10^3=1000,是三位,所以10^?的位数就是?+1位
    //然后我们要把n^n转换成10^?,这个要用到对数log(不懂得可以上网查一查)
    //易得n^n=10^log(n^n)
    //所以,n^n的位数就是log(n^n)+1
    //但是如果算n^n就会爆空间
    //所以我们要适当转换一下
    //运用对数运算公式,原式=n*log(n)+1
    //然后让c++代入运算即可
    //可能有些地方我没讲明白,欢迎在下面提问
    //这个题可以参照03年普及组复赛T4的麦森数
    //里面第一问求n^p-1的位数的方法和这题是一样的
    
  • 1
    @ 2024-08-21 13:08:45

    必须用对数算(高精度算1亿的1亿次方,......)

    #include<iostream>
    #include<cmath>
    using namespace std;
    int main(){
        ios::sync_with_stdio(false);
        int n;
        cin >> n;
        cout << floor(n*log10(n))+1;
        return 0;
    }
    
  • 1

信息

ID
1215
难度
7
分类
(无)
标签
递交数
28
已通过
6
通过率
21%
上传者