递推
作者:互联网
公式一
等差数列求和:
((1+n)*n/2)
公式二
题目描述
设有一个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个。
输入
N和M两个整数。
输出
正方形的个数与长方形的个数。
样例
输入
2 3
输出
8 10
题解
#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
int n,m,a,b,numr,nums;
int main(){
cin>>n>>m;
a=n,b=m;
numr=((1+n)*n/2)*((1+m)*m/2);//矩形个数
while(a>=1&&b>=1){
nums+=a*b;
a--,b--;
}//正方形个数
numr-=nums;//长方形个数
cout<<nums<<" "<<numr;
return 0;
}
标签:numr,nums,int,个数,长方形,正方形,递推 来源: https://www.cnblogs.com/hnzzlxs01/p/16655943.html