D - Another Sigma Problem(ABC)

思路:我们可以处理一个后缀来记录当前数a[i]需要乘上多少(类似于1110这样的),然后对于当前位来说,对答案的贡献还要加上(i - 1) * a[i],因为a[i]还要做前(i - 1)个数的后缀。

代码:

cpp 复制代码
#include <bits/stdc++.h>
#define INF 1000000000
#define LINF 1000000000000000000
#define MOD 1000000007
#define mod 998244353
#define F first
#define S second
#define ll long long
#define N 200010
using namespace std;
ll n,a[N],sz[N],tot[20],pw[N];
int main(){
	ll i,j;
	pw[0]=1;
	for(i=1;i<N;i++)
	{
		pw[i]=(pw[i-1]*10)%mod;
	}
	scanf("%lld",&n);
	for(i=0;i<n;i++)
	{
		scanf("%lld",&a[i]);
		ll x=a[i];
		while(x)
		{
			sz[i]++;
			x/=10;
		}
	}
	ll ans=0;
	for(i=n-1;i>=0;i--)
	{
		ll val=i;
		for(j=0;j<=10;j++)
		{
			val=(val+tot[j]*pw[j])%mod;
		}
		ans=(ans+(a[i]%mod)*val)%mod;
		tot[sz[i]]++;
	}
	printf("%lld\n",ans);
	return 0;
}
相关推荐
漫随流水2 小时前
leetcode算法(151.反转字符串中的单词)
数据结构·算法·leetcode
ada7_2 小时前
LeetCode(python)78.子集
开发语言·数据结构·python·算法·leetcode·职场和发展
DeepVis Research3 小时前
【AGI/Simulation】2026年度通用人工智能图灵测试与高频博弈仿真基准索引 (Benchmark Index)
大数据·人工智能·算法·数据集·量化交易
努力学算法的蒟蒻3 小时前
day52(1.3)——leetcode面试经典150
算法·leetcode·面试
leoufung3 小时前
LeetCode 97. 交错字符串 - 二维DP经典题解(C语言实现)
c语言·算法·leetcode
leiming65 小时前
c++ map容器
开发语言·c++·算法
杨校5 小时前
杨校老师课堂备赛C++信奥之模拟算法习题专项训练
开发语言·c++·算法
世洋Blog5 小时前
AStar算法基础学习总结
算法·面试·c#·astar·寻路
haing20196 小时前
七轴协作机器人运动学正解计算方法
算法·机器学习·机器人
谈笑也风生6 小时前
把二叉搜索树转换为累加树(一)
算法