HDU 2524 矩形A + B(找规律)

来源:互联网 发布:apache nginx 比较 编辑:程序博客网 时间:2024/06/06 09:08

题目传送门:点击打开链接


矩形A + B

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


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

这题可以当做规律来记(PS.比赛的时候交了N遍都wa 赛后在HDU交了一发一样的就AC了。。。。有毒。。。mmp)


规律
如果矩形长为1个网格:
一共有4种可能
如果矩形长为2个网格:(要相邻,下同)
一共有3种可能
如果矩形长为3个网格:
一共有2种可能
如果矩形长为4个网格:
一共有4种可能
一共有4+3+2+1=10种可能
同理宽有2+1=3种可能
所以一共有30个矩形
如果是n行m列
就是(n+n-1+n-2+...+1)*(m+m-1+m-2+...+1)


#include<iostream>#include<cstdio>using namespace std;int n,m;int num[100];int main(){    num[0]=0;    for(int i=1;i<=100;i++)    {        num[i]=num[i-1]+i;    }        int t;    cin>>t;    while(t--)    {        scanf("%d %d",&n,&m);        printf("%d\n",num[n]*num[m]);    }}