数三角形 黑暗爆炸

Posted acmloser

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数三角形 黑暗爆炸相关的知识,希望对你有一定的参考价值。

原题链接
考察:组合数学+gcd
思路:
  不考虑共线情况,总的方案数是\\(C_{n+m}^3\\),考虑共线的话,直接求共线的方案数比不共线好求.那么我们就利用容斥原理即可.
  对于共线的三个点,如果确定了起点和终点,中间点的取法就是gcd(长,宽)-1.对于共线,我们以长宽分类,求当前长i,宽j的三角形个数在*中间点个数 = 共线的方案数.

Code

#include <iostream>
#include <cstring>
using namespace std;
typedef long long LL;
const int N = 1000010;
int m,n;
int gcd(int a,int b)
{
    return b?gcd(b,a%b):a;
}
LL C(int a,int b)
{
    return (LL)a*(a-1)*(a-2)/6;
}
int main()
{
    scanf("%d%d",&m,&n);
    m++,n++;
    LL res = C(n*m,3)-m*C(n,3)-n*C(m,3);
    for(int i=1;i<=m-1;i++)
     for(int j=1;j<=n-1;j++)
         res-=(LL)(m-i)*(n-j)*(gcd(i,j)-1)*2;
    printf("%lld\\n",res);
    return 0;
}

以上是关于数三角形 黑暗爆炸的主要内容,如果未能解决你的问题,请参考以下文章

为啥保守光栅化无法为某些三角形调用片段着色器?

为啥这个 CSS 片段可以画一个三角形? [复制]

JavaScript笔试题(js高级代码片段)

10-4测试

十条实用的jQuery代码片段

高效Web开发的10个jQuery代码片段