#18370: Python解


310573sao (Jiburiru)


題目要求 kn=p

⇒ n log(k) = log(p) (取log10) 

n ≤ 105 , log(p) <= 106  

log(k) = log(p) / 2  ,二分範圍 (0, 10) 

因為k不超過 1010 所以小數點計算至後10為即可

二分次數差不多log2(10) * 10 就可以了

但因為python處理高精度需要Decimal才行(而且好像有優化)

最後求出log(k)  ans = 10log(k) , 然而使用pow(10, log(k) ) 會TLE,  Decimal也沒有power函數

10log(k)=exp(log(k) * ln(10)), Decimal 有exp 有 ln 估計是有優化(泰勒展開)

我是開精確到20, getcontext().prec = 20

 

 

 

#18372: Re:Python解


asnewchien@gmail.com (david)


 

你好厲害,不過我參考你的方法,怎時間差那麼多。

 

#18379: Re:Python解


310573sao (Jiburiru)


 

你好厲害,不過我參考你的方法,怎時間差那麼多。

 



既然這樣就代表有些地方寫的不同吧 你怎麼寫的?

#18381: Re:Python解


asnewchien@gmail.com (david)


 

你好厲害,不過我參考你的方法,怎時間差那麼多。

 



既然這樣就代表有些地方寫的不同吧 你怎麼寫的?


我寄給你了 3Q