問題文
感想
複利の場合の誤差が恐い(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; } }