自学内容网 自学内容网

CSP/信奥赛C++语法基础刷题训练(34):洛谷P2241:统计方形

CSP/信奥赛C++语法基础刷题训练(34):洛谷P2241:统计方形

在这里插入图片描述

题目背景

1997年普及组第一题

题目描述

有一个 n × m n \times m n×m 方格的棋盘,求其方格包含多少正方形、长方形(不包含正方形)。

输入格式

一行,两个正整数 n , m n,m n,m n ≤ 5000 , m ≤ 5000 n \leq 5000,m \leq 5000 n5000,m5000)。

输出格式

一行,两个正整数,分别表示方格包含多少正方形、长方形(不包含正方形)。

样例 #1

样例输入 #1

2 3

样例输出 #1

8 10

AC代码

#include<bits/stdc++.h>
using namespace std;
/*枚举 
枚举每一个格子,看以它为左上角的矩形共有多少个
以x,y为左上角坐标的矩形个数:(n-x)*(m-y)
以x,y为左上角坐标的正方形个数:min(n-x,m-y)
以上规律,同学们可以画出就能轻松分析出来
另外注意:本题要开long long
*/
long long n,m,ans1=0,ans2=0; //ans1统计矩形总数,ans2统计正方形总数 
void cnt(int x,int y){//以x,y为左上角坐标,统计其方形个数 
ans1+=(n-x)*(m-y);//矩形总数 
ans2+=min(n-x,m-y);//正方形个数 
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cnt(i,j);
}
}
cout<<ans2<<" "<<ans1-ans2;//长方形个数=矩形个数-正方形个数 
return 0;
} 

文末彩蛋:

点击王老师青少年编程主页有更多精彩内容


原文地址:https://blog.csdn.net/weixin_66461496/article/details/144126263

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!