1 条题解
-
0
自动搬运
来自洛谷,原作者为

wangyanjing
**搬运于
2025-08-24 22:05:48,当前版本为作者最后更新于2025-01-14 14:14:05,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
前置知识
题意
为了方便书写,这里的 为题目给出的数的第 位。
题意可简化为求以下式子的值:
$$\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
- 上传者