lx让做的题,其实很简单,难度评到紫令人吃惊

首先读进来\(n,m\)先\(++\),之后就是一个格点数为\(n*m\)的矩阵了

我们直接求很那做,补集转化一下,我们容斥来做

首先所有的情况自然是\(C_{n*m}^3\)了

再算出不合法的情况

之后有\(m\)列,三个点在同一列上的方案数自然是\(m*C_n^3\)

有\(n\)行,三个点在同一行的方案数是\(n*C_m^3\)

最后还有斜线上的情况,由于一条方向向量为\((x,y)\)的直线,当两个端点在整点上的时候,直线上还有\(gcd(x,y)-1\)个整点,而这样的的直线一共有\((n-x)(m-y)\)条,这样只考虑了斜率为正的情况,自然还有斜率为负的情况,显然两种情况数量相等,最后还要再乘以二

所以斜线上三点共线的方案数为

\[2*\sum_{i=1}^n\sum_{j=1}^m(gcd(i,j)-1)*(n-i)*(m-j)
\]

那么最后的答案就是

\[C_{n*m}^3-m*C_n^3-n*C_m^3-2*\sum_{i=1}^n\sum_{j=1}^m(gcd(i,j)-1)*(n-i)*(m-j)
\]

显然这都是可以随便求得,如果\(n,m\)再大一些后面就需要反演啦

代码

#include<iostream>
#include<cstring>
#include<cstdio>
#define LL long long
#define re register
LL n,m,ans;
inline LL C(LL n,LL m)
{
LL T=1;
for(re int i=n;i>=n-m+1;i--) T*=(LL)(i);
for(re int i=1;i<=m;i++) T/=(LL)(i);
return T;
}
inline LL read()
{
char c=getchar();
LL x=0;
while(c<'0'||c>'9') c=getchar();
while(c>='0'&&c<='9')
x=(x<<3)+(x<<1)+c-48,c=getchar();
return x;
}
LL gcd(LL a,LL b)
{
if(!b) return a;
return gcd(b,a%b);
}
int main()
{
n=read()+1,m=read()+1;
ans=C(n*m,3);
ans-=C(n,3)*m+C(m,3)*n;
for(re int i=1;i<=n;i++)
for(re int j=1;j<=m;j++)
ans-=2ll*(gcd(i,j)-1)*(n-i)*(m-j);
std::cout<<ans;
return 0;
}

最新文章

  1. IIS8 使用FastCGI配置PHP环境支持 过程详解
  2. How to only capute sub-matched character by grep
  3. ERROR 1130 (HY000):Host&#39;localhost&#39;解决方法
  4. ELK——Logstash 2.2 date 插件【翻译+实践】
  5. Maven构建项目速度慢问题解决
  6. 如何让Vim显示dos下的^M符号
  7. 六款值得推荐的android(安卓)开源框架简介【转】
  8. flex中validateall()方法, 多Item验证 ,结果统一提示
  9. Android环境开发搭建
  10. css3动画工具
  11. vue + element + 初始化项目
  12. LVS负载均衡DR模式实现
  13. 使用Visual Studio Team Services持续集成(三)——使用工件
  14. Oracle12c Data Guard搭建手册
  15. 2.1 mac下多版本jdk的安装和管理
  16. C#使用Aforge调用摄像头拍照
  17. Java中关于LockSupport的简单入门记录
  18. BZOJ.4553.[HEOI2016&amp;TJOI2016]序列(DP 树状数组套线段树/二维线段树(MLE) 动态开点)
  19. win10下安装MinGW-w64 - for 32 and 64 bit Windows
  20. Oracle Listener

热门文章

  1. python 包管理工具Pipenv
  2. 深入理解JavaScript系列(49):Function模式(上篇)
  3. jquery 闭包
  4. Bookstrap4 学习(一)
  5. 反汇编调试Android
  6. 远程连接Redis服务器
  7. Vue.js基础2
  8. Python基础-模块与包
  9. Python爬虫教程-12-爬虫使用cookie爬取登录后的页面(人人网)(上)
  10. 139.00.005 Git学习-分支管理