矩形A + B Time Limit: 2000/1000 MS (
Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4189 Accepted Submission(s): 3240
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
Source HDU 2008-10 Programming Contest 题意: 就是简单的计算 矩形的个数,有公式如下;矩形的总的个数为n*(n+1)/2*m*(m+1)/2 公式的推到过程如下: 就是讲网格单列出来,就每一行来说, 总的网格数是1+2+3+。。。+m=m*((m+1)/2. 对每一列来说: 总的网格数是:1+2+3+。。。+n=n*(n+1)/2; 所以纵隔的代码数为n*(n+1)/2*m*(m+1)/2; 代码如下:
#include
int main()
{
int t,n,m;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
__int64 sum=0;//因为题中的数据至100,所以计算的时候,最后用__int64位,尽管这道题不用也能够正确
sum+=n*(n+1)/2*m*(m+1)/2;
printf("%I64d\n",sum);
}
return 0;
}
|