https://ac.nowcoder.com/acm/problem/14380
题意:略。
题记:略。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+10;
ll a[N];
ll h(int x){
if(x==0)return 1;
ll cnt=0;
while(x){
cnt++;
x/=10;
}
return cnt;
}
int main(){
int n;
cin>>n;
ll mmax=0;
for(int i=1;i<=n;i++){
cin>>a[i];
mmax+=h(a[i])*(n-i);
}
sort(a+1,a+1+n);
ll ans=0;
for(int i=1;i<n;i++){
ll pos=i;
for(int j=h(a[i]);j<=h(a[i]+a[n]);j++){
ll l=i+1,r=n;
while(l<r){
ll mid=(l+r)>>1;
if(h(a[mid]+a[i])>j)
r=mid;
else
l=mid+1;
}
if(h(a[i]+a[l])>j)l--;
//cout<<l<<' '<<pos<<' '<<j<<endl;
//cout<<(l-pos)*j<<endl;
ans+=(l-pos)*j;
pos=l;
}
}
cout<<ans-mmax<<endl;
return 0;
}