NC342. 格点三角形
描述
牛牛最近在研究三角形计数问题。示例1
输入:
2,3
输出:
12
说明:
C 解法, 执行用时: 3ms, 内存消耗: 392KB, 提交时间: 2022-06-26
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 返回满足条件的格点直角三角形数量 * @param n int整型 格点的行数 * @param m int整型 格点的列数 * @return int整型 * * C语言声明定义全局变量请加上static,防止重复定义 */ int getNums(int n, int m ) { if (n < 2 || m < 2) { return 0; } long ln = n, lm = m; long long nSum = (ln * (ln - 1)) / 2 % 1000000007; long long mSum = (lm * (lm - 1)) / 2 % 1000000007; long long result = nSum * mSum % 1000000007; return (result * 4) % 1000000007; }
C++ 解法, 执行用时: 3ms, 内存消耗: 396KB, 提交时间: 2022-03-08
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 返回满足条件的格点直角三角形数量 * @param n int整型 格点的行数 * @param m int整型 格点的列数 * @return int整型 */ int getNums(int n, int m) { // write code here int mod=1e9+7; return 1ll*n*m%mod*(n-1)%mod*(m-1)%mod; } };
C++ 解法, 执行用时: 3ms, 内存消耗: 412KB, 提交时间: 2022-05-21
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 返回满足条件的格点直角三角形数量 * @param n int整型 格点的行数 * @param m int整型 格点的列数 * @return int整型 */ int getNums(int n, int m) { const int mod = 1000000007; return n * (n - 1LL) % mod * m % mod * (m - 1) % mod; } };
C++ 解法, 执行用时: 3ms, 内存消耗: 420KB, 提交时间: 2022-06-26
class Solution { public: int getNums(int n, int m) { return 1ll * n * m % 1000000007 * (n - 1) % 1000000007 * (m - 1) % 1000000007; } };
C++ 解法, 执行用时: 3ms, 内存消耗: 440KB, 提交时间: 2022-07-18
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 返回满足条件的格点直角三角形数量 * @param n int整型 格点的行数 * @param m int整型 格点的列数 * @return int整型 */ int getNums(int n, int m) { // write code here // 边长 n --, m --; typedef long long LL; static constexpr int p = 1000000007; // 底边取不同长度时的位置 m + m - 1 + .. + 1 ==> m * (m + 1) / 2 // 底边在不同行时,高可能的取值 n + n - 1 +... + 1 ==> n * (n + 1) / 2 // 上下,正反 4 种不同的三角形位置 LL res = 1ll * m * (m + 1) % p * n %p * (n + 1) % p; return res; } };