问题描述
1.设有一个n*m方格的棋盘(1≤m,n≤100)。
求出该棋盘中包含多少个正方形、多少个长方形(不包括正方形)。
例如:当n=2,m=3时
正方形的个数有8个;即边长为1的正方形有6个;
边长为2的正方形有2个。
长方形的个数有10个;
即2*1的长方形有4个;
1*2的长方形有3个;
3*1的长方形有2个;
3*2的长方形有1个。
程序要求:输入:n和m 输出:正方形的个数与长方形的个数
输入格式
一行两个数N,M
输出格式
一行两个数,分别为正方形个数和长方形个数。
样例输入
2 3
样例输出
8 10
数据规模和约定
1≤m,n≤100
1.设有一个n*m方格的棋盘(1≤m,n≤100)。
求出该棋盘中包含多少个正方形、多少个长方形(不包括正方形)。
例如:当n=2,m=3时
正方形的个数有8个;即边长为1的正方形有6个;
边长为2的正方形有2个。
长方形的个数有10个;
即2*1的长方形有4个;
1*2的长方形有3个;
3*1的长方形有2个;
3*2的长方形有1个。
程序要求:输入:n和m 输出:正方形的个数与长方形的个数
输入格式
一行两个数N,M
输出格式
一行两个数,分别为正方形个数和长方形个数。
样例输入
2 3
样例输出
8 10
数据规模和约定
1≤m,n≤100
import java.util.*;
//x=min(m,n)-1
//长方形里面数正方形的个数计算公式:m*n+(m-1)*(n-1)+.....+(m-x)*(n-x)
// m*n表示长度为1的正方形的个数,(m-1)*(n-1)表示长度为2的正方形的个数。。。。。。
//长方形里面数长方形的个数计算公式(包含正方形):(1+2+3+...+m)*(1+2+3+...+n)=n*m(n+1)*(m+1)/4
public class Main3 {
public static int N, M;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
M = sc.nextInt();
int sumz = 0;
int sumc = 0;
if (N > M) {
for (int i = M - 1; i >= 0; i--) {
sumz += (N - i) * (M - i);
}
} else {
for (int i = N - 1; i >= 0; i--) {
sumz += (N - i) * (M - i);
}
}
// 长方形个数
sumc = N * M * (N + 1) * (M + 1) / 4 - sumz;
System.out.println(sumz + " " + sumc);
}
}