Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
98363 | CSYZHeYixuan | 早凉的函数2 | C++ | 运行超时 | 80 | 1000 MS | 57576 KB | 1014 | 2023-08-14 16:18:50 |
#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; }