拼三角形

xiaoxiao2021-02-28  180

【题目描述】 给你n根木棍,用 4 根木棍能拼出多少个正三角形呢? 【输入格式】 第一行一个整数n 第二行n个整数Ai表示第i根木棍的长度。 【输出格式】 正三角形的个数。 答案可能很大,请对 109+7 取模。 【样例输入】 4 1 1 2 2 【样例输出】 1 【数据范围】 对于 10 的数据,满足 1<=n<=10 对于 50 的数据,满足 1<=n<=103 对于 100 的数据,满足 1<=n<=106 ,且 0<=Ai<=5000 【分析】 不难想到这4根木棍只能这么分布:x,y,x+y,x+y。 于是枚举 Ai ,用组合数公式计算即可,注意一些细节。

#include<bits/stdc++.h> using namespace std; int a[5005]={0}; const int Mod=1e9+7; int main(){ int n,x,Max=0,ans=0; scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",&x),a[x]++,Max=max(Max,x); for (int i=2;i<=Max;i++){ int t=a[i]*(a[i]-1)/2; for (int j=1;j<=i/2;j++) if (j!=i-j) ans=(ans+t*a[j]*a[i-j])%Mod; else ans=(ans+t*a[j]*(a[j]-1)/2)%Mod; } printf("%d",ans); }
转载请注明原文地址: https://www.6miu.com/read-39588.html

最新回复(0)