题目连接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1183
已知 a*(b+c)=bc-1; 给一个1=<a<=6000,求这个方程b,c正整解使b+c最小,
可以设t=b+c;则b+c=t;b*c=a*t+1;b,c为x^2-t*x+a*t+1=0的根。
1.问题转化为x^2-t*x+a*t+1=0,求最小的t使该方程解都为正整数。
考察判别式det=t^2-4*a*t-4;判别式需为完全平方数。
于是设t^2-4*a*t-4=k^2;
变形一下得(t-2*a-k)*(t-2*a+k)=4*(a^2+1);
t-2*a-k与(t-2*a+k)同奇偶,由等号右边为偶,设
2.t-2*a-k=2*i,t-2*a+k=2*j(i*j=a^2+1);
上两式相加于是t可表示为t=2*a+i+j;
现在就是求i+j的最小值了,积一定,i与j相差越小i+j越小
i=a 往小的开始枚举,一旦(a^2+1)%i==0跳出
3.输出t=2*a+i+j;
注:结果会很大,注意使用long long
rookie的代码: