题目
Java 代码
解法一 暴力枚举
即为统计出 所有矩形以及正方形个数
package luoguEnumViolence;
import java.util.Scanner;
/**
* @author LZH.create
* 解法一 暴力枚举
*/
public class P2241_a {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in) ;
long m = sc.nextLong() ;
long n = sc.nextLong() ;
long ans = 0 ;
for(long i = 1 ; i <= m ;i++) {
for(long j = 1 ; j <= n ;j++) {
ans += i* j ; // 枚举所有可能
}
}
int count = 0 ;
// 枚举正方形
for(int i = 1 ; i <= Math.min(m, n) ; i++) {
count += (m-i+1)*(n-i+1) ;
}
System.out.print(count+" ");
System.out.println(ans-count);
}
}
解法二 排列组合
说到排列组合推荐大家看看博主的排列组合讲解哦 🍭🍭
package luoguEnumViolence;
import java.util.Scanner;
/**
* @author LZH.create
*
* 解法二
* 统计方形 运用排列组合
* n m 分别为 方形的 nxm
* C( n+1, 2) C(m+1 ,2 )
*
*/
public class P2241 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in) ;
long n = sc.nextInt() ;
long m = sc.nextInt() ;
// 求出所有矩形的个数
long nums = C(m+1,2) * C(n+1,2) ;
//求出 正方形的个数
long num1 = 0 ;
for(long i = 1 ; i <= Math.min(m, n) ;i++) {
num1 += (n-i+1)*(m-i+1) ;
}
System.out.print(num1+" ");
System.out.print(nums-num1);
}
public static long A(long m,long n) {
long result = 1 ;
for(long i = n ; i > 0 ; i--) {
result *= m ;
m-- ;
}
return result ;
}
public static long C(long m,long n) {
long son = A(m,n) ;
long mother = A(n,n) ;
return son/mother ;
}
}