このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題文についておおまかに説明する。
SuperSumは次のように定義される関数である:
- すべての正数nに対して、SuperSum(0, n) = n
- 任意の正数n, kに対しSuperSum(k, n) = SuperSum(k-1, 1) + SuperSum(k-1, 2) + ... + SuperSum(k-1, n)
さて、kとnが与えられたとき、SuperSum(k , n)の値を求めよ。
私の解答はこちら。
public class ShorterSuperSum { public int calculate(int k, int n) { return SuperSum(k, n); } private int SuperSum(int k, int n){ int num = 0; if( k <= 0 ) return n; for( int i=1 ; i<=n ; i++ ){ num += SuperSum(k-1, i); } return num; } }
得点は248.15/250、1回のsubmitでシステムテストクリア。
0 件のコメント:
コメントを投稿