[题解]AT_abc288_f [ABC288F] Integer Division
思路
定义 表示前 位所能得到的答案。
那么,不难得出状态转移方程,其中 表示 转为的数字:
这样的时间复杂度为 过不了,考虑用前缀和优化。
然后用前缀和维护一下 即可。
时间复杂度 。
注意:为了代码简介,我们规定 ,这样就可以省去 。因为每一次 都会多 ,加起来就正好为 。
Code
#include <bits/stdc++.h>
#define int long long
#define re register
using namespace std;
const int N = 2e5 + 10,mod = 998244353;
int n;
int dp[N],sum[N];
string s;
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> s;
s = ' ' + s;
dp[1] = s[1] - '0';
sum[1] = dp[1] + 1;
for (re int i = 2;i <= n;i++){
dp[i] = (10 * dp[i - 1] + (s[i] - '0') * sum[i - 1]) % mod;
sum[i] = (sum[i - 1] + dp[i]) % mod;
}
printf("%lld",dp[n]);
return 0;
}
作者:WaterSun
出处:https://www.cnblogs.com/WaterSun/p/18262940
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
分类:
题解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下