必威体育Betway必威体育官网
当前位置:首页 > IT技术

Triangles

时间:2019-09-14 08:41:04来源:IT技术作者:seo实验室小编阅读:90次「手机版」
 

triangles

9/100 发布文章 在这里插入图片描述

在这里插入图片描述

只需要算取三条斜率不相同的直线的方案数即可。

任取3-取2相同再取1-取3相同

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=3e5+10;
const ll mod=1e9+7;
int n,m;
ll cnt,ans,tot;
struct node
{
 ll a,b,c,cnt;
}t[maxn],tmp[maxn];
void exgcd(ll a,ll b,ll& x,ll& y)
{
    if(!b) 
 { 
  x=1; 
  y=0; 
 }
    else
 { 
  exgcd(b,a%b,y,x); 
  y-=x*(a/b); 
 }
}
inline bool cmp(node a,node b)
{
 return 1.0*a.a/a.b < 1.0*b.a/b.b;
}
int main(){
 scanf("%d",&n);
 for(int i=1;i<=n;i++) 
  scanf("%lld%lld%lld",&t[i].a,&t[i].b,&t[i].c),tmp[i].cnt=1;
 sort(t+1,t+1+n,cmp);
 cnt=1;
 for(int i=2;i<=n;i++)
 {
  if(1.0*t[i].a/t[i].b==1.0*t[i-1].a/t[i-1].b) 
   tmp[cnt].cnt++;
  else 
   tmp[++cnt]=(node){t[i].a,t[i].b,t[i].c,1};
 }
 for(int i=1;i<=cnt;i++)
 {
  tot=((n-tmp[i].cnt)*(n-tmp[i].cnt-1)/2)%mod*tmp[i].cnt%mod;
  ans=(ans+tot)%mod;
 }
 for(int i=1;i<=cnt;i++)
 {
  tot=tmp[i].cnt*(tmp[i].cnt-1)/2%mod;
  ans=((ans-tot*(n-tmp[i].cnt))%mod+mod)%mod;
 }
 exgcd(3ll,mod,tot,cnt);
 tot=(tot%mod+mod)%mod;
 printf("%lld",ans%mod*tot%mod);
 return 0;
}

相关阅读

分享到:

栏目导航

推荐阅读

热门阅读