2013年7月2日火曜日

TopCoder SRM467 Div2 250Pts

この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 件のコメント:

コメントを投稿

フォロワー

ページビューの合計