題目鏈結
反正切函式的應用
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的概率 不是安全到達那些很複...