详细的题解见这里。
图片转自上面的博客
假设我们已经推导出来x在处取得最小值,并且注意到这个点是位于两个整点之间的,所以从这两个整数往左右两边枚举b就能找到b+c的最小值。
其实只用往一边枚举就够了,由于对称性,我们不妨假设b ≤ c,那么只要让b从2a开始递减枚举即可。
#include <iostream>
using namespace std;
long long a, i;
int main(){int T;cin>>T;while(T--){cin>>a;i=a*;while((i*i+)%(i-a))i--;cout<<(i*i+)/(i-a)<<endl;}return ;}
代码君