POJ 1183 反正切函数的应用 (推公式)

反正切函数的应用

Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 14468   Accepted: 5227

Description

反正切函数可展开成无穷级数,有如下公式

(其中0 <= x <= 1) 公式(1)

使用反正切函数计算PI是一种常用的方法。例如,最简单的计算PI的方法:

PI=4arctan(1)=4(1-1/3+1/5-1/7+1/9-1/11+...) 公式(2)

然而,这种方法的效率很低,但我们可以根据角度和的正切函数公式:

tan(a+b)=[tan(a)+tan(b)]/[1-tan(a)*tan(b)] 公式(3)

通过简单的变换得到:

arctan(p)+arctan(q)=arctan[(p+q)/(1-pq)] 公式(4)

利用这个公式,令p=1/2,q=1/3,则(p+q)/(1-pq)=1,有

arctan(1/2)+arctan(1/3)=arctan[(1/2+1/3)/(1-1/2*1/3)]=arctan(1)

使用1/2和1/3的反正切来计算arctan(1),速度就快多了。 
我们将公式(4)写成如下形式

arctan(1/a)=arctan(1/b)+arctan(1/c)

其中a,b和c均为正整数。

我们的问题是:对于每一个给定的a(1 <= a <= 60000),求b+c的值。我们保证对于任意的a都存在整数解。如果有多个解,要求你给出b+c最小的解。

Input

输入文件中只有一个正整数a,其中 1 <= a <= 60000。

Output

输出文件中只有一个整数,为 b+c 的值。

Sample Input

1

Sample Output

5

Source

Noi 01

一道推公式的题目,注意数据范围

1/a = (1/b + 1/c)/ (1 - 1/(b*c)) => bc-1 = a(b+c) assume b=a+m and c=a+n (b and c is always bigger than a) (a+m)(a+n)-1=a(a+m+a+n) => a*a+a*n+a*m+m*n-1=2*a*a+m*a+n*a => m*n=a*a+1

再枚举m(或者n)即可

关键是b=a+m,c=a+n这里的一个转换

 1 #include<cstdio>
 2 #include<cmath>
 3 #include<cstring>
 4 #include<stdlib.h>
 5 #include<algorithm>
 6 #define LL __int64
 7 using namespace std;
 8 int main()
 9 {
10     //freopen("in.txt","r",stdin);
11     LL a;
12     scanf("%I64d",&a);
13     for(LL i=a;i>=0;i--)//枚举m
14     {
15         if((a*a+1)%i==0)//n=(a*a+1)/i   m=i
16         {
17             printf("%I64d\n",a+i+a+(a*a+1)/i);
18             break;
19         }
20     }
21     return 0;
22 }

时间: 2024-11-09 04:34:52

POJ 1183 反正切函数的应用 (推公式)的相关文章

POJ 1183 反正切函数的应用

H - 反正切函数的应用 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit Status Description 反正切函数可展开成无穷级数,有如下公式 (其中0 <= x <= 1) 公式(1) 使用反正切函数计算PI是一种常用的方法.例如,最简单的计算PI的方法: PI=4arctan(1)=4(1-1/3+1/5-1/7+1/9-1/11+...) 公式(2) 然

POJ 1183 反正切函数的应用(数学代换,基本不等式)

题目链接:http://poj.org/problem?id=1183 这道题关键在于数学式子的推导,由题目有1/a=(1/b+1/c)/(1-1/(b*c))---------->a=(b*c-1)/(b+c). 要求b+c的最小值,利用数学中的总体思想.令y=b+c.推导出ay=by-b^2-1. 再令t=b-a,得到了y=t+(a^2+1)/t+2a. 求y的最小值,非常easy想到数学中的基本不等式,x+a/x>=2根a.当x=a/x时取等号. 可是对于本题sqrt(a*a+1)不一定

poj 2115 C Looooops(推公式+扩展欧几里得模板)

Description A Compiler Mystery: We are given a C-language style for loop of type for (variable = A; variable != B; variable += C) statement; I.e., a loop which starts by setting variable to value A and while variable is not equal to B, repeats statem

HDU 4873 ZCC Loves Intersection(JAVA、大数、推公式)

在一个D维空间,只有整点,点的每个维度的值是0~n-1 .现每秒生成D条线段,第i条线段与第i维度的轴平行.问D条线段的相交期望. 生成线段[a1,a2]的方法(假设该线段为第i条,即与第i维度的轴平行)为,i!=j时,a1[j]=a2[j],且随机取区间[0,n-1]内的整数.然后a1[i],a2[i]在保证a1[i]<a2[i]的前提下同样随机. 由于D条线段各自跟自己维度的轴平行,我们可以转换成只求第i个维度与第j个维度的相交期望,然后乘以C(2,n)就好了 显然线段[a1,a2]和线段[

HDU 4870 Rating(概率、期望、推公式) &amp;&amp; ZOJ 3415 Zhou Yu

其实zoj 3415不是应该叫Yu Zhou吗...碰到ZOJ 3415之后用了第二个参考网址的方法去求通项,然后这次碰到4870不会搞.参考了chanme的,然后重新把周瑜跟排名都反复推导(不是推倒)四五次才上来写这份有抄袭嫌疑的题解... 这2题很类似,多校的rating相当于强化版,不过原理都一样.好像是可以用高斯消元做,但我不会.默默推公式了. 公式推导参考http://www.cnblogs.com/chanme/p/3861766.html#2993306 http://www.cn

sgu495:概率dp / 推公式

概率题..可以dp也可以推公式 抽象出来的题目大意: 有 n个小球,有放回的取m次  问 被取出来过的小球的个数的期望 dp维护两个状态 第 i 次取出的是 没有被取出来过的小球的 概率dp[i] 和取出的是已经被取出来过的小球的概率np[i]; 如果第 i-1 次取出的是已经被取出来过的小球 那么第 i 次取出没有取出来过小球的概率即为 dp[i-1]: 反之则为 dp[i-1] - 1/n(没有取出来过的小球少了一个) 所以可以得到状态转移方程 dp[i]=dp[i-1]*(dp[i-1]-

bjfu1211 推公式,筛素数

题目是求fun(n)的值 fun(n)= Gcd(3)+Gcd(4)+…+Gcd(i)+…+Gcd(n).Gcd(n)=gcd(C[n][1],C[n][2],……,C[n][n-1])C[n][k] means the number of way to choose k things from n things. n最大一百万,马上反映到可能是递推打表. 首先肯定是推公式了,fun(n)其实就是Gcd(n)的一个前n项和,没意义,直接看Gcd(n),把前几项列出来,发现公式是Gcd(n) =

ASC(22)H(大数+推公式)

High Speed Trains Time Limit: 4000/2000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) SubmitStatisticNext Problem Problem Description The kingdom of Flatland has n cities. Recently the king of Flatland visited Japan and was amazed by high

HDU 1165 Eddy&#39;s research II (推公式)

Eddy's research II Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3122    Accepted Submission(s): 1137 Problem Description As is known, Ackermann function plays an important role in the sphere