Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
98113 | _JF_ | 早凉的函数2 | C++ | 解答错误 | 80 | 456 MS | 3384 KB | 1199 | 2023-08-14 12:18:52 |
#include<bits/stdc++.h> using namespace std; const int N =1e6+10; #define int long long int a[N],n,sum[N]; bool f=true; int Getnum(int x){ int sum=0; while(x>0) (x%10<=4)?f=true:f=false,sum+=x%10,x/=10; return sum; } void Slove(){ int Ans=0; for(int i=1;i<=n;i++) for(int j=i;j<=n;j++){ // Ans+=Getnum(a[i]+a[j]); if(i==j) Ans+=Getnum(a[i]+a[j]); else Ans+=Getnum(a[i]+a[j])*2; } cout<<Ans<<endl; } void Slove2(){ int AnS=0; sort(a+1,a+n+1); for(int i=1;i<=n;i++) AnS+=sum[i]*(2*n); for(int i=1;i<=n;i++){ int pre=upper_bound(a+1,a+n+1,9-a[i])-a; if(pre==-1) continue; else AnS-=(n-pre+1)*9; } cout<<AnS<<endl; } signed main(){ // freopen("text.in","r",stdin); // freopen("ans1.out","w",stdout); bool Flag=true; cin>>n; for(int i=1;i<=n;i++) scanf("%lld",&a[i]); if(n<=5000) Slove(),exit(0); for(int i=1;i<=n;i++){ f=true; sum[i]=Getnum(a[i]); if(f==false) Flag=false; } if(Flag==true){ int ans=0; for(int i=1;i<=n;i++) ans+=sum[i]*(2*n); cout<<ans<<endl,exit(0); } Flag=true; for(int i=1;i<=n;i++) if(!(a[i]>=0&&a[i]<=9)) Flag=false; if(Flag==true) Slove2(),exit(0); } // 第一档分?