/*
【基础】:方形问题(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 ;
}
【基础】:方形问题(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 ;
}