abc379E
作者:
Air1222
,
2024-11-13 22:14:14
,
所有人可见
,
阅读 4
//首先考虑贡献法,求每一个数字的贡献值,发现会爆long long
//一个不用高精度的方法
//可以差分改变一段位数
//然后进位模拟即可
#include <iostream>
using namespace std;
typedef long long LL;
const int N = 3e5+10;
LL b[N];
char s[N];
void insert(int l,int r,LL c)
{
b[l]+=c;
b[r+1]-=c;
}
int main()
{
int n;
scanf("%d%s",&n,s+1);
for(int i=1;i<=n;i++)
insert(1,n-i+1,i*(s[i]-'0'));
for(int i=1;i<=N;i++) b[i]+=b[i-1];
for(int i=1;i<=N;i++)
{
b[i+1]+=b[i]/10;
b[i]%=10;
}
int t=N;
while(!b[t]&&t>=1) t--;
for(int i=t;i>=1;i--) cout<<b[i];
return 0;
}