抱灵求助,不会调试
查看原帖
抱灵求助,不会调试
264548
Tangent233楼主2020/5/10 13:58
#include<bits/stdc++.h>
using namespace std;
int tong[5001];
const int mod=1000000007;
int c[5001][3];
int com(int n,int k)//从n个元素取出k个 
{
    if(c[n][k]!=0) return c[n][k];
    int a=1,b=1,c1=1;
    for(int i=1;i<=n;i++) a=a*i%mod;
    for(int i=1;i<=k;i++) b=b*i%mod;
    for(int i=1;i<=n-k;i++) c1=c1*i%mod;
    c[n][k]=a%mod/(b%mod*c1%mod);
    c[n][k]%=mod;
    return c[n][k];
}
int ans=0;
int main()
{
    int n;
    cin>>n;
    int k,max=0;
    for(int i=1;i<=n;i++)
    {
        cin>>k;
        if(k>max) max=k;
        tong[k]++;
    }
    for(int i=2;i<=max;i++)
    {
        int m=0;
        if(tong[i]>=2)
        {
            m=com(tong[i],2)%mod;
            for(int j=1;j<=i-1;j++)
            {
                if(j==i-j)
                {
                    if(tong[j]>=2) m=m*com(tong[j],2)%mod;
                }
                else
                {
                    if(tong[j]>=1&&tong[i-j]>=1) m=m%mod*tong[j]%mod*tong[i-j]%mod;
                }
            }
        }
        ans+=m;
    }
    cout<<ans;
    return 0;
}
2020/5/10 13:58
加载中...