讲讲我的思路
查看原帖
讲讲我的思路
1284815
canwen楼主2024/4/11 23:48

大佬们写的题解好长(。。 编写一个函数

int num(int x,int y){
	//x长的线段上有多少段y长的线段
	return x-y+1; 
}

然后调用它,想想你怎么数长方形的

int tmp=num(n,x)*hlong(m,y);

举个例子: 在一边为2的情况下,从1枚举到2,相当于在它上面查找有多少个1~2的情况,另一边也是如此,计算好相乘并判断是否为正方形,加入到对应的变量即可 显而易见:

#include<iostream>
using namespace std;
long long f,c;
int hlong(int x,int y){
	//x长的线段上有多少段y长的线段
	return x-y+1; 
}
int main(){
	int n,m;
	cin>>n>>m;
	for(int x=1;x<=n;x++){
		for(int y=1;y<=m;y++)
		{
			int tmp=hlong(n,x)*hlong(m,y);
			if(x==y){
				f+=tmp;
			}else{
				c+=tmp;
			}
		}
	}
	cout<<f<<" "<<c;
}

AC了!

2024/4/11 23:48
加载中...