【SCU】Carries

xiaoxiao2021-02-28  101

#include<bits/stdc++.h> using namespace std; long long carries; const int MAXN=100010; int a[MAXN],b[MAXN]; int main(void) { int n; while(~scanf("%d",&n)) { carries=0; for(int i = 0; i < n; ++i) { scanf("%d",&a[i]); } int tmp=1; for(int i = 1; i <= 9; ++i) { tmp*=10; for(int j = 0; j < n; ++j) { b[j] = a[j]%tmp; } sort(b,b+n); int left=n; for(int j = 0; j < n; ++j) { while(left && b[j]+b[left-1]>=tmp) --left; if(left<=j) carries+=(n-left-1); //去掉b[j] else carries+=(n-left); } } carries/=2; printf("%lld\n",carries); } return 0; }
转载请注明原文地址: https://www.6miu.com/read-56101.html

最新回复(0)