D - Another Sigma Problem(ABC)

思路:我们可以处理一个后缀来记录当前数ai需要乘上多少(类似于1110这样的),然后对于当前位来说,对答案的贡献还要加上(i - 1) * ai,因为ai还要做前(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 小时前
Hot 100 ---腐烂的橘子
java·数据结构·后端·算法·leetcode·广度优先
未来之窗软件服务2 小时前
计算机考试-快速排序—东方仙盟
数据结构·算法·排序算法·仙盟创梦ide·东方仙盟
小龙报2 小时前
【优选算法】1. 水果成蓝 2.找到字符串中所有字母的异位词
java·c语言·数据结构·数据库·c++·redis·算法
txzrxz3 小时前
数论:排列数、组合数、费马小定理、逆元、同余定理
c++·算法·数论·组合数·费马小定理·逆元·排列数
xqqxqxxq3 小时前
LeetCode Hot100 双指针专项题解笔记
笔记·算法·leetcode
闪电悠米3 小时前
力扣hot100-54.螺旋矩阵-模拟边界控制详解
算法·leetcode·矩阵
变量未定义~3 小时前
虚拟节点-星石传送阵(4星)、强连通分量
数据结构·算法
IT方大同4 小时前
C语言分支与循环语句
c语言·开发语言·算法
待磨的钝刨4 小时前
深入理解主成分分析(PCA)
人工智能·线性代数·算法·机器学习
wWYy.5 小时前
算法:合并两个有序数组
数据结构·算法