2011年8月14日日曜日

TopCoder SRM219 Div2 250Pts

今日のTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。それでは、問題について説明する。

あなたは美味しい中華料理を食べ終え、ウェイターが請求書を持ってきた。課税される前の額はtotalであった。消費税はこの地域ではtexPercentである。そしてあなたの現在の所持金額はmoneyである。サービスがとてもよかったので、できるだけチップを弾みたいと思った。そこで、次の式を満たすtipの最大値を求めるメソッドを作成せよ。

total + floor(total*taxPercent/100) + floor(total*tip/100) <= money

私の解答は以下の通り。

public class WaiterTipping {
 public int maxPercent(int total, int taxPercent, int money) {
 for( int i=money-total ; i>=0 ; i-- ){ // tipの取りうる上限値から考える
   int tmp = (int) Math.floor(total*taxPercent/100) + (int)Math.floor(total*i/100);
   if( total + tmp <= money ) return i;
 }
 return -1;
 }
}

得点は236.79/250。定義式が与えられているので、それをコードに変換しておしまい。

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計