解題觀念:
這題的提議很簡單明瞭。
依照公式,總之就是要算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
沒有留言:
張貼留言