2014年8月21日 星期四

[UVA]Very Easy!

UVA 10523程式解題。






















解題觀念:
這題的提議很簡單明瞭。

依照公式,總之就是要算N * A從0~N次方的總和

因為題目規定的次方範圍還挺廣的,15次方耶!!到15次方耶!!

所以本題要用BigInteger下去寫。不然用int十之八九會overflow。


解題步驟:

我上面的程式碼是有宣告字串陣列str[],然後將字串分割放入陣列裡面,將轉成整數。

可是,其實不用這麼麻煩,直接宣告兩個整數就好。那時候誤會題意,以為要一次就要輸入兩個數字所以才會這樣寫。 請直接宣告兩個整數吧!

如果直接宣告兩個整數輸入,就不用去做那些字串轉換成整數這些麻煩的步驟,

就直接跳下面的for迴圈,從1開始,終止條件到n為止(n為次方數)。

每計算一次次方,相乘之後,就加到sum裡面去。

這裡計算次方所用到的函數為.pow();乘法的函數multiply();相加的函數.add()

之後印出,最後要記得初始化


EX:(我這邊寫的範例,以我上面程式碼的過程作解釋喔!)
3 3

str[0] = 3;str[1] = 3。

a = BigInteger.valueOf( Integer.parseInt(str[1]) );a = 3。(看程式註解)

進入for迴圈,

sum = 0。
i = 1,sum = sum.add( a.pow( i ).multiply( BigInteger.valueOf( i ) ) );

sum = 0+3*1 = 3。

i = 2,sum = sum.add( a.pow( i ).multiply( BigInteger.valueOf( i ) ) );
sum = 3+9*2 = 21。

i = 3,sum = sum.add( a.pow( i ).multiply( BigInteger.valueOf( i ) ) );
sum = 21+27*3 = 102 。


By  小K

沒有留言:

張貼留言