今日の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 件のコメント:
コメントを投稿