b962. 12413 - Big Decimal Calculator
Tags : 大數 數學
Accepted rate : 4人/10人 ( 40% ) [非即時]
評分方式:
Strictly

最近更新 : 2024-05-03 04:25

Content

寫膩大整數運算了嗎?不怕不怕!高精度浮點數運算來囉!

蛤?嫌只有加減乘除太簡單了?沒關係沒關係,這邊再加碼指對數與三角函數,讓你想寫多少,就寫多少!

Input

輸入檔共有 $T (T \leq 100)$ 行,一行代表一筆測資。

每筆測資的格式皆為 [op] [a_1] ... [a_k] [p],參數間以一空白隔開,且行末沒有多餘空白。其中

  1. op 為一 $k$ 元運算子,只能是 add, sub, mul, div, pow, atan2, exp, ln, sqrt, asin, acos, atan, sin, cos, tan,分別代表加法、減法、乘法、除法、次方、atan2 函數、自然指數函數、自然對數函數、(非負) 平方根、反正弦函數、反餘弦函數、反正切函數、正弦函數、餘弦函數、正切函數。前 $6$ 種運算子為二元運算子,而後 $9$ 種運算子則為一元運算子。
  2. a_1, ..., a_k 為運算元,皆為浮點數,且最多只會出現 $20$ 位數。本題浮點數輸入/輸出格式詳述在後。
  3. p 為一不大於 $50$ 的正整數。

浮點數格式為 [sgn][int][frac],其中

  1. sgn 只能是空字串或 "-" (不含引號)。另,若 [int][frac] 表示的浮點數數值為 $0$,則 sgn 應為空字串,亦即不應出現 "-0.000"。
  2. int 為一非負整數。若其值為 $0$,則應用 "0" (不含引號) 表示;若其值為正,則不應有 leading zero。
  3. frac 格式只能是空字串或 ".[d]" (不含引號),其中 d 為一非空數字字串。

此外,

  1. div 運算中,第二個運算元必不為 $0$。
  2. pow, exp, ln, sqrt 運算中,所有運算元皆嚴格大於 $0$。
  3. atan2 運算中,至少一個運算元不為 $0$。
  4. asinacos 運算中,運算元的絕對值皆嚴格小於 $1$。
Output

對於每筆測資,輸出一行,代表運算結果四捨五入到小數以下 $p$ 位的結果,如運算結果恰為 $-0.375$ 且 $p=2$,則應輸出 "-0.38" (不含引號)。保證運算結果的絕對值不超過 $10^{10}$。另,由於浮點數誤差,保證四則運算外的捨入誤差 (round-off error) 不會恰為 $5\times10^{-p-1}$。

Sample Input #1
add 1.357 4.6279 10
sub 1.357 4.6279 10
mul 1.357 4.6279 10
div 1 103 30
pow 12.2 12.15 20
atan2 2.45 1.77 30
exp 10.98 50
ln 21.065 50
sqrt 2 40
asin 0.81 30
acos 0.47 35
atan 0.618 40
sin 3.1415 25
cos 2.0113 50
tan 1.78987 30
Sample Output #1
5.9849000000
-3.2709000000
6.2800603000
0.009708737864077669902912621359
15822384813181.61872382001683484036
0.945162277467215967394902628052
58688.55427461755601946329091442988532551237342326651423
3.04761289543097985660178308429069456872534888053139
1.4142135623730950488016887242096980785697
0.944152115154155950477697775653
1.08150554878078090500864808815790029
0.5535497640327316544572642343482671646331
0.0000926535896606714405662
-0.42639511018918176703311006536787403871085921161347
-4.491415179046604916096895094786
測資資訊:
記憶體限制: 512 MB
不公開 測資點#0 (100%): 10.0s , <1M
Hint :

這題大概是我寫過最長的忍耐任務了@@
我上傳UVa的AC程式碼超過20KB 將近900行

測資的第1-15行就是範測
第16-30行只有加減乘除
如果你發現自己在30行內WA掉
請再確認自己的輸出格式是否正確

另外 如果你覺得自己在31行以後WA得太沒有道理了
可以寄訊息問我 有空的話會幫你看看 也許只是我的code算錯了wwwwww

Tags:
大數 數學
出處:
UVa12413 [管理者: xavier13540 (柊 四千) ]

Status Forum 排行

ID User Problem Subject Hit Post Date
沒有發現任何「解題報告」