SPOJ ARCTAN (数论) Use of Function Arctan

落花浮王杯 提交于 2020-01-24 01:48:05

详细的题解见这里

图片转自上面的博客

假设我们已经推导出来x在

处取得最小值,并且注意到这个点是位于两个整点之间的

,所以从这两个整数往左右两边枚举b就能找到b+c的最小值。

其实只用往一边枚举就够了,由于对称性,我们不妨假设b ≤ c,那么只要让b从2a开始递减枚举即可。

 

1 #include <iostream>
2 using namespace std;
3 long long a, i;
4 int main(){int T;cin>>T;while(T--){cin>>a;i=a*2;while((i*i+1)%(i-a))i--;cout<<(i*i+1)/(i-a)<<endl;}return 0;}
代码君

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!