机房的窗户是一个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;
}