提交时间:2023-08-14 16:18:50

运行 ID: 98363

#include<bits/stdc++.h> using namespace std; #define int long long const int MX=2e6+100; int n,a[MX],ans,P[MX]; vector<int>g[100]; int F(int x){ int ans=0; while(x){ ans+=x%10;x/=10; } return ans; } signed main(){ ios::sync_with_stdio(0); cin>>n;P[0]=1; for(int i=1;i<=16;i++) P[i]=P[i-1]*10; for(int i=1;i<=n;i++) cin>>a[i],ans+=F(a[i]); ans*=n*2; for(int i=1;i<=n;i++){ for(int j=1;j<=16;j++){ g[j].push_back(a[i]%P[j]); } } for(int i=1;i<=16;i++) sort(g[i].begin(),g[i].end()); for(int i=1;i<=n;i++) for(int j=1;j<=16;j++){ if(g[j].size()==0) continue; int val=P[j],id=a[i]%P[j]; int l=0,r=g[j].size()-1; while(l<r){ int mid=l+r+1>>1; if(g[j][mid]<val-id){ l=mid; } else r=mid-1; } if(g[j][l]>=val-id) l--; ans-=9*(g[j].size()-1-l); // int pos=lower_bound(g[j].begin(),g[j].end(),val-a[i]%P[j])-g[j].begin(); // ans-=9*(g[j].size()-pos); // cout<<pos<<' '<<l<<'\n'; } cout<<ans; return 0; }