牛客寒假基础集训营 | Day1 A题—honoka和格点三角形

在这里插入图片描述

一. 题目描述

honoka最近在研究三角形计数问题。
她认为,满足以下三个条件的三角形是“好三角形”。

  1. 三角形的三个顶点均为格点,即横坐标和纵坐标均为整数。
  2. 三角形的面积为 1
  3. 三角形至少有一条边和 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;

}
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值