求助,这样写为什么不对
查看原帖
求助,这样写为什么不对
1302337
mishearstar楼主2024/11/9 21:08
#include<iostream>

using namespace std;

#define int long long
const int N =1e5+10,mod = 1e9 + 7;
int num[N];
int n,res;


signed main()
{
	cin >>n;
	int maxx = 0;
	for(int i = 1; i <= n; i++) {
		int x;
		cin >>x;
		maxx = max(maxx,x);
		num[x]++;
	}
	int cnt = 1;
	for(int i = 2; i <= maxx; i++){
		cnt = 1;
		if(num[i] >= 2){
			for(int j = 1; j <= i - j; j++){
				cnt *= num[i]*(num[i] - 1) / 2;
				cnt %= mod;
				int k = i - j;
				if(k == j)	cnt *= num[j]*(num[j] - 1) / 2;
				else cnt *= num[j]*num[k];
				res = (res + cnt) % mod;
			} 
		}
	}

	cout <<res;
	return 0;
}
2024/11/9 21:08
加载中...