#12805: C直覺解法


wei115 (unknown)

學校 : 僑光技術學院
編號 : 66295
來源 : [59.126.109.77]
最後登入時間 :
2019-08-07 20:37:49
a671. 00113 - Power of Cryptography -- UVa113 | From: [120.109.129.16] | 發表日期 : 2017-10-12 14:52

#include<stdio.h>
#include<math.h>
#define MY_E 2.718281828459

int main()
{
double n, p;

while(scanf("%lf%lf",&n ,&p) != EOF)
     printf("%d\n", (int)(pow(MY_E, log(p)/n) + 0.5));

return 0;
}

1.先用換底公式把式子轉為e為底的對數(log(e)k = log(e)p/n)

2.log()函式是取e為底的對數

3.M_E在標準裡面是沒有定義的,但GCC支持這樣的用法,但在解題系統裡會錯誤,所以自己定義了一個MY_E

4.定義 N= log(e)p/n 則 e^N = k

5.最後小數點四捨五入,因為轉型為int時會無條件捨去,所以先+0.5再轉型,已達到四捨五入的目的

6.我數學真的很爛

 
ZeroJudge Forum