洛谷 P6483 题解

题目链接:https://www.luogu.com.cn/problem/P6483
昨天刚用小号交题解的我又来用大号交题解了。
这一次,我用了一个与众不同是做法,首先,由我小号的题解,可得 n=r/2+2m,b=(m2)(n2)n=r/2+2-m,b=(m-2)(n-2),,然后,可得 (m2)(r/2m)=b(m-2)(r/2-m)=b,化成一元二次方程的一般形式,就变成了 m2m(r/2+2)+(r+b)=0m^2-m(r/2+2)+(r+b)=0,解得 m=r2+2±(r22)24b2m=\dfrac{\dfrac{r}{2}+2\pm \sqrt{(\dfrac{r}{2}-2)^2-4b}}{2},由于两个根一定是正整数,所以取 m=r2+2=(r22)24b2m=\dfrac{\dfrac{r}{2}+2=\sqrt{(\dfrac{r}{2}-2)^2-4b}}{2} 即可。

#include<bits/stdc++.h>
using namespace std;
int r,b,k,m;int main(){
	scanf("%d%d",&r,&b),k=r/2;
	m=(k+2-sqrt((k-2)*(k-2)-4*b))/2;
	printf("%d %d",k+2-m,m);return 0;
}