Programming Challenge -PKU- 2683 Ohgas' Fortune


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

2683 Ohgas' Fortune

解答例

import java.util.*;

public class Main {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        for(int i=0;i<m;i++){
            int f = sc.nextInt();
            int y = sc.nextInt();
            int n = sc.nextInt();
            int max = Integer.MIN_VALUE;
            for(int j=0;j<n;j++){
                int mode = sc.nextInt();
                double r = sc.nextDouble();
                int c = sc.nextInt();
                if(mode==0) max = Math.max(max, single(f, y, r, c));
                else max = Math.max(max, compound(f, y, r, c));
            }
            System.out.println(max);
        }
    }
    private static int single(int a, int year, double ratio, int charge){
        int interest = 0;
        for(int i=0;i<year;i++){
            interest += a * ratio;
            a -= charge;
        }
        return a + interest;
    }
    private static int compound(int a, int year, double ratio, int charge){
        if(year==0) return a;
        else return compound(a + (int)(a * ratio) - charge, year - 1, ratio, charge);
    }
}