Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
98123 | seanlsy | 早凉的函数2 | C++ | 通过 | 100 | 991 MS | 28376 KB | 980 | 2023-08-14 12:20:34 |
#include <bits/stdc++.h> #define int long long using namespace std; inline int read(){ int x=0,f=1;char ch=getchar(); for(;ch<'0'||ch>'9';ch=getchar()) if(ch=='-') f=-1; for(;ch>='0'&&ch<='9';ch=getchar()) x=(x<<3)+(x<<1)+(ch&15); return f*x; } int n,a[200005],p[20],tmp,f[200005],sum,sum2,l,r,mid,lst[20][200005]; inline int lbd(int x,int val){ l=0,r=n+1; while(l<r-1){ mid=l+r>>1; if(lst[x][mid]>=val) r=mid; else l=mid; } return r; } signed main(){ // freopen("ssh.in","r",stdin); // freopen("lk.out","w",stdout); n=read(),p[0]=1; for(int i=1;i<=15;i++) p[i]=p[i-1]*10ll; for(int i=1;i<=n;i++){ a[i]=read(); for(int j=1;j<=15;j++) lst[j][i]=a[i]%p[j]; tmp=a[i]; while(tmp) f[i]+=tmp%10,tmp/=10; sum+=f[i]; } sum<<=1,sum*=n; for(int i=1;i<=15;i++) sort(lst[i]+1,lst[i]+n+1); for(int i=1;i<=n;i++) for(int j=1;j<=15;j++) sum2+=n-lbd(j,p[j]-a[i]%p[j])+1; printf("%lld\n",sum-9ll*sum2); return 0; }