題目連接: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的代碼: