机房的窗户

机房的窗户是一个n行m列的方格阵,最外圈的方格是红色的,其余方格是黑色的。 给出红色方格的个数r和黑色方格的个数b,请给出一组可行的n,m的取值。

输入

输入只有一行两个整数,分别表示红色方格的个数r和黑色方格的个数b。 8≤r≤2×10 ^6 1≤b≤2×10 ^6 数据保证至少存在一组解

输出

输出一行两个整数,分别表示方格阵的行数n和列数m。 如果有多组解,请输出n最大的一组。

输入

8 1

输出

3 3

思路:枚举,条件是(n-1+m-1)*2==r&&(n-2)*(m-2)==b,否则while循环下去

CODE:

#include<bits/stdc++.h>
using namespace std;
int main() {
	int r,b,n,m=1,ans;
	cin>>r>>b;
	ans=n=r+b;
	while((n-1+m-1)*2!=r&&(n-2)*(m-2)!=b) {//枚举
		n--;
		while(ans%n)
			n--;
		m=ans/n;
	}
	cout<<n<<" "<<m<<endl;
	return 0;
}

おすすめ

転載: blog.csdn.net/weixin_55599629/article/details/119965984
おすすめ