矩形A + B
Time Limit: 2000/1000 MS ( Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4189 Accepted Submission(s): 3240Problem Description 给你一个高为n ,宽为m列的网格,计算出这个网格中有多少个矩形,下图为高为2,宽为4的网格.
Input 第一行输入一个t, 表示有t组数据,然后每行输入n,m,分别表示网格的高和宽 ( n < 100 , m < 100).
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; 代码如下:
#includeint 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; }