方形问题(数方形)

/*
【基础】:方形问题(easy)

Time Limit:1000MS  Memory Limit:65536K
Total Submit:388 Accepted:180 

Description 

设有一个N*M方格的棋盘( l<= N<= 100,1<= M<= 100)。 
求出该棋盘中包含有多少个正方形、多少个长方形(不包括正方形)。 
例如:当 N=2, M=3时: 
正方形的个数有8个:即边长为1的正方形有6个; 
边长为2的正方形有2个。 
长方形的个数有10个: 
即2*1的长方形有4个: 
1*2的长方形有3个: 
3*1的长方形有2个: 
3*2的长方形有1个: 


Input 

(a.in):N,M

Output 

(a.out):正方形的个数与长方形的个数

Sample Input 


2 3

Sample Output 


8 10

*/

/*
解题思路:
根据数方格时的重叠性去做,而不是整除边,因为数的时候不是独立的
比如:
1x3的方格:
1 2 3 4

在数的过程中:应该为:1 2 3 , 2 3 4, 显然:2已重叠
并且度是1,即间距为1: 所以直接计算,然后相乘:
k2 = m-i+1 ; k1 为在横向所能扩展出的边的个数
k1 = n-i+1 ; k2 为在纵向所能扩展出的边的个数
相乘即为总个数;

*/

#include 
<stdio.h>

int main(void)
{
    
long xx=0,xy=0 ;
    
int i,j,k1,k2,d,n,m ;
    
    scanf(
"%d %d",&n,&m);
    
    
for(i=1 ; i<= n;  i++/*枚举各种方形*/
    
for(j=1 ; j<= m;  j++)
    {
             k1
= n-i+1;
             k2
= m-j+1;
            
if ( i == j)
            {
                
                 xx 
+= k1*k2;
            }
            
else
            {
                 xy 
+= k1*k2;
            }
    }
    
    printf(
"xx=%ld,yy=%ld ",xx,xy);
   
    
return 0 ;
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值