一、题目描述
统计方形(数据加强版)
题目背景
1997年普及组第一题
题目描述
有一个 n × m n \times m n×m 方格的棋盘,求其方格包含多少正方形、长方形(不包含正方形)。
输入格式
一行,两个正整数 n , m n,m n,m( n ≤ 5000 , m ≤ 5000 n \leq 5000,m \leq 5000 n≤5000,m≤5000)。
输出格式
一行,两个正整数,分别表示方格包含多少正方形、长方形(不包含正方形)。
样例 #1
样例输入 #1
2 3
样例输出 #1
8 10
二、参考代码
#include <bits/stdc++.h>
using namespace std;
long long n, m, a, b, sum1, sum2;
int main(void)
{
/*
正方形个数
边长为1:n*m
边长为2:(n - 1)* (m - 1)
......
边长为min(n,m):(m-min{n,m}+1)*(n-min{n,m}+1)
长方形加正方形个数
total=(1+2+3+…+n)*(1+2+3+…+m)
=((1+n)*(1+m)*n*m)/4
*/
cin >> n >> m;
a = n; b = m; sum1 = a * b;
while (a != 0 && b != 0)
{
a--, b--;
sum1 += (a * b);
}
sum2 = ((1 + n) * (1 + m) * n * m) / 4;
cout << sum1 << " " << sum2 - sum1;
}
文章讲述了如何解决一个编程问题,即计算给定大小棋盘上正方形和长方形的数量,提供了题目描述、输入输出格式以及参考C++代码示例。
2895

被折叠的 条评论
为什么被折叠?



