📄 12.txt
字号:
//n*m个方格的棋盘(1<=m,n<=100),求出该棋盘中包含多少个正方形、多少个长方形(不包括正方形)。
//例如:当n=3,m=2时,将输出8和10
//组合数学(1+2+3+……+m)*(1+2+3+……+m)
//m*n + (m-1)*(n-1) + (m-1)*(n-2) + (m-k)*(n-k)一直到有一边为则退出
#include <iostream>
using namespace std;
int Countrectangle(int m, int n, unsigned long *square, unsigned long *rectangle)
{
*square = *rectangle = 0;
*rectangle=m*(m+1)/2;
*rectangle*=n*(n+1)/2;
while(m>0 && n>0)
*square+=(m--)*(n--);
*rectangle-=*square;
return 0;
}
int main()
{
int n, m;
cout<<"请输入n和m:"<<endl;
while(cin>>n>>m)
{
if(n<=0 || m<=0)
{
cout<<"注意:你所输入的范围无效!程序结束!!!"<<endl;
return 0;
}
unsigned long square, rectangle;
Countrectangle(n, m, &square, &rectangle);
cout<<"n为:"<<n<<", m为:"<<m<<"时,正方形个数为:"
<<square<<", 长方形个数为:"<<rectangle<<endl;
cout<<"请输入n和m:"<<endl;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -