问题 C: 数方格
时间限制: 1 Sec 内存限制: 128 MB
题目描述
设有一个
n*m
方格的棋盘(
1
≤
m,n
≤
100
)。(
30%
)
求出该棋盘中包含多少个正方形、多少个长方形(不包括正方形)。
例如:当
n=2
,
m=3
时
正方形的个数有
8
个;即边长为
1
的正方形有
6
个;
边长为
2
的正方形有
2
个。
长方形的个数有
10
个;
即
2*1
的长方形有
4
个;
1*2
的长方形有
3
个;
3*1
的长方形有
2
个;
3*2
的长方形有
1
个。
输入
第一行输入一个整型数T,这个数字为测试数据的个数。从第二行开始会有T组测试数据,每行为两个正整数N和M(1<=n,m<=100)。
输出
与测试数据对应,刚好有
T
行测试数据,每行包含两个数,分别为正方形的个数与长方形的个数,两个数之前用一个空格隔开,行尾不要有多余的空格。
样例输入
22 33 4
样例输出
8 1020 40
提示
//QUST 1228
//问题 C: 数方格
#include<stdio.h>
int main()
{
int n,m;
int tmpn,tmpm;
int rectangle,square;
int t;
int count;
scanf("%d",&t);
for(count=1;count<t;count++){
rectangle = square = 0;
scanf("%d %d",&n,&m);
for(tmpn=1;tmpn<=n;tmpn++){
for(tmpm=1;tmpm<=m;tmpm++){
if(tmpm == tmpn)
square += ((n+1-tmpn)*(m+1-tmpm));
else
rectangle += ((n+1-tmpn)*(m+1-tmpm));
}
}
printf("%d %d\n",square,rectangle);
}
rectangle = square = 0;
scanf("%d %d",&n,&m);
for(tmpn=1;tmpn<=n;tmpn++){
for(tmpm=1;tmpm<=m;tmpm++){
if(tmpm == tmpn)
square += ((n+1-tmpn)*(m+1-tmpm));
else
rectangle += ((n+1-tmpn)*(m+1-tmpm));
}
}
printf("%d %d",square,rectangle);
return 0;
}
再回首卧槽说好的结构化呢?没什么难度。长方形的英文是rectangle,记住了吗?