BZOJ3505 & ??????P3166 [Cqoi2014]???????????? ?????????????????????

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ3505 & ??????P3166 [Cqoi2014]???????????? ?????????????????????相关的知识,希望对你有一定的参考价值。

???????????????   zoj   class   ?????????   ??????   ??????   int   cst   ??????   

??????

????????????nxm?????????????????????????????????????????????????????????????????????????????????4x4?????????????????????????????????

???????????????????????????????????????

????????????

???????????????????????????????????????????????????m???n???

????????????

???????????????????????????????????????????????????

????????????

2 2

????????????

76

????????????

1<=m,n<=1000

??????

???????????????????????????????????????\(C_{n*m}^{3}\)?????????????????????
???????????????????????????????????????\(n * C_{m}^{3}\)???\(m * C_{n}^{3}\)
?????????????????????

???????????????????????????????????????\(n \leq 1000\)?????????\(n^2\)
????????????????????????????????????????????????????????????\(i\)??????????????????\(j\)
????????????????????????\(2*(n - i)*(m-j)\)???????????????????????????????????????
?????????????????????$ = gcd(i,j) + 1$
?????????????????????\(gcd(i,j)-1\)
????????????????????????????????????=\(2*(n-i)*(m-j)*(gcd(i,j) - 1)\)

????????????

#include<iostream>
#include<cstdio>
#include<algorithm>
#define LL long long int
using namespace std;
LL n,m,ans;
LL C(LL x){return x * (x - 1) * (x - 2) / 2 / 3;}
LL gcd(LL a,LL b){return b ? gcd(b,a % b) : a;}
int main(){
    cin>>n>>m; n++; m++;
    if (n > m) swap(n,m);
    ans = C(n * m) - C(m) * n - C(n) * m;
    for (int i = 2; i < n; i++)
        for (int j = 2; j < m; j++)
            ans -= 2 * (gcd(i,j) - 1) * (n - i) * (m - j);
    cout<<ans<<endl;
    return 0;
}

以上是关于BZOJ3505 & ??????P3166 [Cqoi2014]???????????? ?????????????????????的主要内容,如果未能解决你的问题,请参考以下文章

bzoj3505 数三角形 组合计数

BZOJ 3505 数三角形

bzoj3505 Cqoi2014—数三角形

BZOJ3505[Cqoi2014]数三角形 组合数

BZOJ 3505 [Cqoi2014]数三角形

bzoj3505 [Cqoi2014]数三角形