AOJ 0240 Interest Rates

問題文

Interest Rates

感想

複利の場合の誤差が恐い(1.001)^30乗とか2^30とか大きくて恐いがまあ通りそうだと思った。

解法

元のお金は1円として考える。

ソース

実装マジで下手。

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <vector>
#include <cmath>
using namespace std;
 
int main(){
    int n;
    while(cin >> n && n){
        int y;
        cin >> y;
        vector< pair<double,int> > S;
        for(int i = 0 ; i < n ; i++){
            double b,r,t;
            cin >> b >> r >> t;
             
            if( t == 1 ){
                S.push_back(make_pair(1+y*r/100.0,(int)b));
            }else{
                S.push_back(make_pair(pow(1+r/100.0,y),(int)b));
            }
        }
        sort(S.rbegin(),S.rend());
        cout << S[0].second << endl;
    }
}