Atcoder357 D(逆元和快速幂)
D
题意就是求给定一个数n的连续n个n相拼接,求最后的数
我们假设n的长度为len,那么n个n相拼接可以看成n*(
但是取mod运算法则对除法没法很好的处理,所以这里需要用到逆元来将除法运算转换成乘法运算。
对于数字非常大,再求n次幂时也需要用到快速幂来降低时间复杂度。
乘法逆元
快速幂
#include <bits/stdc++.h>
#define debug1(X) std::cout << #X << ": " << X << '\n'
#define debug2(X) std::cout << #X << ": " << X << ' '
using LL = long long;
const LL mod=998244353;
LL poww(LL a, LL b) {
LL ans = 1, base = a;
while (b != 0) {
if (b & 1 != 0)
ans =ans*base%mod;
base = base*base%mod;
b >>= 1;
}
return ans;
}
void solve()
{
LL n;
std::cin>>n;
LL num=n;
LL len=1;
while(num){
num/=10;
len=len*10;
}
LL ans=(n%mod)*(poww(len%mod,n)-1)%mod*(poww((len-1)%mod,mod-2))%mod;
std::cout<<ans<<"\n";
}
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int t = 1;
// std::cin >> t;
while (t--)
{
solve();
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?