1 条题解
-
1
正反则难,我们用总方案数减去共线的,总方案数为 :
。
然后减去水平方向和竖直方向共线的:
和 。
然后再减去斜着共线的,枚举△i、△j
然后减去:
表示第一个点的方案,表示中间能选的点的个数,最后乘 是因为斜率可以是正的也可以是负的。
```#include<bits/stdc++.h> #define int long long using namespace std; int m,n,t; int a[1005][1005]; bool vis[1005][1005]; signed main() { cin>>m>>n; t=n*m*(n*m-1)/2*(n*m-2)/3; t-=m*n*(n-1)*(n-2)/6; t-=n*m*(m-1)*(m-2)/6; for(int i=1; i<n; ++i) { for(int j=1; j<m; ++j) { t-=(n-i)*(m-j)*(__gcd(i,j)-1)*2; } } cout<<t<<"\n"; return 0; }
- 1
信息
- ID
- 255
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- (无)
- 递交数
- 27
- 已通过
- 14
- 上传者