提交时间:2023-08-14 12:20:06

运行 ID: 98120

#include<bits/stdc++.h> using namespace std; #define ll long long inline void read(ll &x){ x=0;bool f=0;char c=getchar(); while(c>'9'||c<'0'){if(c=='-')f=1;c=getchar();} while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar(); if(f)x=-x; } const int N=2e5+100; ll n,a[N]; bool le4(ll b){ while(b){ if(b%10>4) return 0; b/=10; } return 1; } int get_sub(){ if(n<=5e3)return 1; int A=1,B=1; for(int i=1;i<=n;i++) if(a[i]>9){ A=0; break; } for(int i=1;i<=n;i++) if(!le4(a[i])){ B=0; break; } if(A&&B)return 2; if(A)return 3; if(B)return 4; return 5; } ll g[20][10]; ll f(ll x){ ll ans=0; while(x){ ans+=x%10; x/=10; } return ans; } int main(){ read(n); for(int i=1;i<=n;i++)read(a[i]); int op=get_sub(); if(op==1){ ll ans=0; for(int i=1;i<=n;i++) for(int j=1;j<i;j++) ans+=f(a[i]+a[j]); ans*=2; for(int i=1;i<=n;i++) ans+=f(a[i]+a[i]); cout<<ans; return 0; } if(op==2){ ll k[5],ans=0; for(int i=0;i<=4;i++)k[i]=0; for(int i=1;i<=n;i++) k[a[i]]++; for(ll i=0;i<=4;i++){ for(ll j=0;j<=4;j++) ans=ans+(k[i]*k[j]*(i+j)); } cout<<ans; return 0; } if(op==3){ ll k[10],ans=0; for(int i=0;i<=9;i++)k[i]=0; for(int i=1;i<=n;i++) k[a[i]]++; for(ll i=0;i<=9;i++){ for(ll j=0;j<=9;j++) ans=ans+(k[i]*k[j]*f(i+j)); } cout<<ans; return 0; } if(op==4){ ll ans=0; for(int i=1;i<=n;i++){ int k=1; while(a[i]){ g[k][a[i]%10]++; a[i]/=10; k++; } } for(ll h=1;h<=n;h++){ for(ll i=0;i<=4;i++){ for(ll j=0;j<=4;j++) ans=ans+(g[h][i]*g[h][j]*(i+j)); } } cout<<ans; return 0; } if(op==5){ ll ans=0; for(int i=1;i<=n;i++) for(int j=1;j<i;j++) ans+=f(a[i]+a[j]); ans*=2; for(int i=1;i<=n;i++) ans+=f(a[i]+a[i]); cout<<ans; return 0; } return 0; } /* 4 44 14 24 34 */