【科普】什么是BestCoder?如何参加? |
矩形A + BTime 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; } |
时间: 2024-07-29 14:07:09