杭电2524 矩形A + B(找规律,递推 水题)

来源:互联网 发布:java运行原理 编辑:程序博客网 时间:2024/05/20 06:41

矩形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
21 22 4
 

Sample Output
330
 

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<stdio.h>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;}


0 0
原创粉丝点击