计数三角形
题意:在n*m的网格中,找至少一边平行x或y的面积为2的三角形个数。
解法:分情况考虑
1、两边平行x和y 1*2 或 2 * 1 矩形 有四个。
2、一边平行x或y 长度为1 或 2.
//#include <bits/stdc++.h> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <iostream> #include <string> #include <stdio.h> #include <queue> #include <stack> #include <map> #include <set> #include <string.h> #include <vector> #define ME(x , y) memset(x , y , sizeof(x)) #define SF(n) scanf("%d" , &n) #define rep(i , n) for(int i = 0 ; i < n ; i ++) #define INF 0x3f3f3f3f #define mod 1000000007 #define PI acos(-1) using namespace std; typedef long long ll ; int main() { ll n , m , ans = 0 ; cin >> n >> m ; ans =ans + 4 * ((n - 1) * (m - 2) % mod+(n - 2) * (m - 1) % mod) % mod;// 1 * 2 + 2 * 1 ans = ans % mod + (2 * (n - 1) % mod * (m - 2) % mod * (m - 2) % mod + 2 * (m - 1)%mod * (n - 2)%mod * (n - 2)%mod)%mod;// 一边长为2平行x和平行 y ans = ans % mod + (2 * (n - 2) % mod * (m - 1) % mod * (m - 2) % mod + 2 * (m - 2) % mod * (n - 1) % mod * (n - 2) % mod)% mod ;//一边长为1平行x和平行y cout << ans % mod << endl; }