1 条题解

  • 0
    @ 2025-8-24 22:05:48

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar wangyanjing
    **

    搬运于2025-08-24 22:05:48,当前版本为作者最后更新于2025-01-14 14:14:05,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    前置知识

    loga(b)=log(b)log(a)\log_a(b) = {\log(b) \over \log(a)} log(ab)=log(a)+log(b)\log(ab) = \log(a) + \log(b) logc(ab)=logc(a)+logc(b)\log_c(ab) = \log_c(a) + \log_c(b) len=log10(n)+1len = \log_{10}(n) + 1

    题意

    为了方便书写,这里的 sis_i 为题目给出的数的第 ii 位。

    题意可简化为求以下式子的值:

    $$\log_{10}(\prod_{i = 0}^{n-1} a^i \cdot \prod_{i = 1}^n s_i)+1 $$

    Solution

    $$\log_{10}(\prod_{i = 0}^{n-1} a^i \cdot \prod_{i = 1}^n s_i)+1 $$$$= \log_{10}(a^{\sum_{i = 0}^{n-1} i} \cdot \prod_{i = 1}^n s_i)+1 $$$$= \log_{10}(a^{n(n-1) \over2} \cdot \prod_{i = 1}^n s_i)+1 $$$$= \log_{10}(a^{n(n-1) \over2}) + \log_{10}(\prod_{i = 0}^n s_i)+1 $$$$= \log_{10}(a^{n(n-1) \over2}) + \sum_{i = 1} ^n \log_{10} s_i +1 $$$$= {\log(a^{n(n-1) \over2}) \over \log (10)} + \sum_{i = 0} ^n \log_{10} s_i +1 $$$$= {\log(a^{n(n-1) \over2}) \over \log (10) \cdot \log(a)} \cdot \log(a) + \sum_{i = 1} ^n \log_{10} s_i +1 $$$$= {(n-1)n \cdot \log(a) \over 2\log (10)} + \sum_{i = 1} ^n \log_{10} s_i +1 $$$$= {(n-1)n \over 2} \cdot \log_{10} a + \sum_{i = 1} ^n \log_{10} s_i +1 $$

    Code

    #include<cstdio>
    #include<cmath>
    #include<cstring>
    const int N = 1e5+5;
    char S[N];
    #define ll long long
    inline void Solve(void){
    	int a;
    	std::scanf("%d",&a);
    	std::scanf("%s",S+1);
    	int n = std::strlen(S+1);
    	long double ans = 0;
    	for(int i = 1;i<=n;++i) ans += std::log10(S[i]-'0');
    	ans += 1.0 * n * std::log10(a) / 2 * (n-1);
    	ll len = std::floor(ans) + 1ll;
    	std::printf("%lld\n",len);
    }
    int main(){
    	int T;
    	std::scanf("%d",&T);
    	while(T--) Solve();
    	return 0;
    }
    
    
    • 1

    信息

    ID
    3937
    时间
    1000ms
    内存
    125MiB
    难度
    5
    标签
    递交数
    0
    已通过
    0
    上传者