题目背景
1997年普及组第一题
题目描述
有一个 n×mn×m 方格的棋盘,求其方格包含多少正方形、长方形(不包含正方形)。
输入格式
一行,两个正整数 n,mn,m(n≤5000,m≤5000n≤5000,m≤5000)。
输出格式
一行,两个正整数,分别表示方格包含多少正方形、长方形(不包含正方形)。
输入输出样例
输入 #1复制
2 3
输出 #1复制
8 10
C语言代码实现:
#include <stdio.h>
#include <string.h>
int main() {
int n, m,i;
scanf("%d %d", &n, &m); // 读取棋盘的行数n和列数m
long long int countz=0;
//计算正方形的个数
long long int j=n>m?m:n; // 取 m,n 的最小值
for(i=1;i<=j;i++)
{
countz+=(n+1-i)*(m+1-i); // i 是正方形的边,每一行能取得的正方形边的不同种数, 每一列能取得的正方形边的不同种数,
}
//计算长方形的个数
long long countc=(long long)(n*(n+1)/2)*(long long)(m*(m+1)/2)-countz;
// 行中任意画两条线 , 列中任意画两条线 , 减去正方形的数目
printf("%lld %lld",countz,countc);
return 0;
}