提交时间:2023-08-14 12:26:50

运行 ID: 98187

#include<bits/stdc++.h> #define int long long using namespace std; int f[20]; int n,a[200001],b[200001][17]; vector<int> vec[17]; int root[20]; int F(int x){ int ret=0; while(x){ ret+=(x%10); x/=10; } return ret; } bool B=1; signed main(){ // freopen("_.in","r",stdin); ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; int ans=0; for(int i=1;i<=n;i++){ cin>>a[i]; int x=a[i],pos=0,P=1; while(x){ pos++; b[i][pos]=b[i][pos-1]+P*(x%10); P*=10; ans+=(x%10)*(2*n); if(x%10>4) B=0; x/=10; } } if(B){ cout<<ans;return 0; } for(int i=1;i<=n;i++){ for(int j=1,P=1;j<=16;j++){ P*=10; if(!b[i][j]) b[i][j]=b[i][j-1]; vec[j].push_back(b[i][j]); } } for(int i=1;i<=16;i++){ vec[i].push_back(0); sort(vec[i].begin(),vec[i].end()); } int P=10; for(int i=1;i<=16;i++){ int l=0,r=n; for(;l<=n;l++){ while(vec[i][r-1]+vec[i][l]>=P) r--; if(vec[i][r]+vec[i][l]>=P) ans-=(n-r+1)*9; } P*=10; } cout<<ans; }