POJ1183(數學題)(推公式)

2021-08-14 20:11:23 字數 2097 閱讀 4896

題目鏈結

反正切函式的應用

time limit: 1000ms memory limit: 10000k

total submissions: 15884 accepted: 5685

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

sample output

數學題,推公式。

由題目可知,(p

+q)/

(1−p

q)=1

/a,其

中p=1

/b,q

=1/c

. 即1

/a=(

b+c)

/(bc

−1),

(我就推

到這,這

麼菜怎麼

辦啊)

由上式可

得,c=

(ab+

1)/(

b−a)

,那麼b

+c=b

+(ab

+1)/

(b−a

) 為了

儘量減少

未知數個

數以及將

ab這個

不好表示

的東西去

掉 b+

c=b+

ab/(

b−a)

+1/(

b−a)

=b+(

ab+a

∗a−a

∗a)/

(b−a

)+1/

(b−a

) =b

+a+(

a∗a+

1)/(

b−a)

因為一定存在整數解,那麼設t=

b−a.

原始=t+2∗

a+(a

∗a+1

)/t

因為一定存在整數解,(a

∗a+1

)/t為

整數,那

麼t就是

(a∗a

+1) 的因子。

再觀察函式f(

t)=t

+2∗a

+(a∗

a+1)

/t這是乙個類似對號函式(已經全忘乾淨了。。。。哇的一聲哭出來)

函式值從a到0逐漸遞增,要求最小的b+c,就從a到0列舉可行的值就好了。

(數學題真的難,這麼菜怎麼辦啊)

#include

#include

using

namespace

std;

#define ll long long

int main()}}

}

POJ 1183 反正切函式的應用 推公式

time limit 1000ms memory limit 10000k total submissions 14468 accepted 5227 description 反正切函式可展開成無窮級數,有如下公式 其中0 x 1 公式 1 使用反正切函式計算pi是一種常用的方法。例如,最簡單的計算...

POJ1183 反正切函式的應用 數學 C語言

題目 思路 知道要推導公式,根據公式 4 的兩種形式推來推去,似乎沒有太大結果。看了discuss里大牛的推導,看懂之後就很簡單了,關鍵就是b a m,c a n 借用大牛的推導 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 ...

POJ 3744 數學題概率題 矩陣乘冪

轉的網上的解題報告http hi.baidu.com rpsproblem blog item d2cbe67aa1d8b5fd0bd1875f.html,用於備戰校賽 按照題目的意思,我們很容易推出公式 f i p f i 1 1 p f i 2 f i 表示到達位置i的概率 不是安全到達那些很複...