一. 题目描述
honoka
最近在研究三角形计数问题。
她认为,满足以下三个条件的三角形是“好三角形
”。
- 三角形的三个顶点均为格点,即横坐标和纵坐标均为整数。
- 三角形的面积为 1。
- 三角形至少有一条边和 x 轴或 y 轴平行。
honoka
想知道,在平面中选取一个大小为 n*m 的矩形格点阵,可以找到多少个不同的“好三角形
”?由于答案可能过大,请对 1000000007取模。
二. 测试用例
三. 代码
#include <iostream>
using namespace std;
#include <cmath>
const long long mod = 1000000007;
long long getValue(long long n,long long m){
long long tmp1 = m * (m+1) % mod;
tmp1 = tmp1 * (n-1) % mod;
tmp1 = 2 * tmp1 % mod;
long long tmp2 = (m-1) * (m-1) % mod;
tmp2 = tmp2 * n % mod;
tmp2 = 2 * tmp2 % mod;
return (tmp1 + tmp2) % mod;
}
int main(){
long long n,m;
cin >> n >>m;
n--;
m--;
long long ans = 0;
ans = (getValue(n,m) + getValue(m,n)) % mod;
cout << ans << endl;
return 0;
}