感觉思路没错,只AC前三个,大佬帮忙看看
查看原帖
感觉思路没错,只AC前三个,大佬帮忙看看
398504
lzm15096067472楼主2021/9/2 15:28
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
const long long kMod = 1e9 + 7;
int jihe(int n)
{
    int a;
    a=(n*(n-1))/2;
    return a%kMod;
}
int main()
{
        long long  n,a[5010],cnt=0,num,q,w,big=-1,i;
    scanf("%lld",&n);
    for( i=0;i<n;i++)
    {
        cin>>num;a[num]++;
        big=max(big,num);
    }
    for(i=big;i>=2;i--)
    {
        if(a[i]>=2)
        {
            for(q=i-1,w=1;q>w;q--,w++)
            {
                if(a[q]>=1&&a[w]>=1)
                    cnt+=jihe(a[i])*(a[q]%kMod)*(a[w]%kMod);
            }
            if(q==w&&a[q]>=2)
                cnt+=jihe(a[i])*jihe(a[q]);
        }
    }
    cnt=cnt%kMod;
    cout<<cnt;
    return 0;
}

是一些细节错了么,大佬帮忙看看,萌新刚入门

2021/9/2 15:28
加载中...