Skip to content

SP 1440题解

Published: at 04:06

题意

给出 arctan(1a)=arctan(1b)+arctan(1c)\arctan(\frac{1}{a})=\arctan(\frac{1}{b})+\arctan(\frac{1}{c}) 中的 aa,求 b+cb+c 的最小值。

思路

等式两边同时同取 tan\tan 值,得到 1a=b+cb×c1\frac{1}{a}=\frac{b+c}{b \times c-1},整理可得 (b×c1)a=b+c\frac{(b \times c-1)}{a}=b+c,令 y=b+cy=b+cb=xb=x,所以 y=(yx)×x1ay=\frac{(y-x)\times x-1}{a},整理再求导可得 yy[a+1,2a][a+1,2a] 区间单调递减,所以从 2a2a 开始暴力即可

注意

代码

#include<bits/stdc++.h>
using namespace std;
long long t,a,n;
int main(){
	cin>>t;
	while (t--){
		cin>>n;
		a=n*2;
		while ((a*a+1)%(a-n)){
			a--;
		}
		cout<<(a*a+1)/(a-n)<<endl;
	}
	return 0;
}

说句闲话,这个是 NOI 2001 Day1 T2 的题在 SPOJ 上的搬运。