首页 > 代码库 > 1412200906-hd-矩形A+B

1412200906-hd-矩形A+B

<marquee width="600">【科普】什么是BestCoder?如何参加?
</marquee>

矩形A + B

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4511    Accepted Submission(s): 3491


Problem Description
给你一个高为n ,宽为m列的网格,计算出这个网格中有多少个矩形,下图为高为2,宽为4的网格.
技术分享
 

Input
第一行输入一个t, 表示有t组数据,然后每行输入n,m,分别表示网格的高和宽 ( n < 100 , m < 100).
 

Output
每行输出网格中有多少个矩形.
 

Sample Input
2
1 2
2 4
 

Sample Output
3
30
解题思路
我没想到直接用公式sum=n*(n+1)*m*(m+1)/4。我用了笨方法,双重for循环,
第一层循环是新矩形的宽,第二层循环是新矩形的长。
代码
#include<stdio.h>
int main()
{
	int n;
	int a,b;
	int sum;
	int i,j,k,x;
	scanf("%d",&n);
	while(n--)
	{
		scanf("%d%d",&a,&b);
		if(a<b)
		{
			x=a;
			a=b;
			b=x;
		}
		sum=0;
		for(i=1;i<=b;i++)//新矩形列有i个 
		    for(j=1;j<=a;j++)//新矩形横有j个 
		        sum+=(b-i+1)*(a-j+1);
		//或者直接用公式sum=a*(a+1)*b*(b+1)/4;
		printf("%d\n",sum);
	}
	return 0;
} 


 

1412200906-hd-矩形A+B