2683(AOJ 1135):Ohgas' Fortune
keyword
シミュレーション C++
概要
金額と、金利と毎年の手数料の組と年数が与えられる。決められた年数で最大お金がどれだけ増やせるかを求める問題。
問題文が長いけど、ひねりは無い。読めたら後は書くだけ。調べるの面倒で変数名にtanriとかhukuriとか使ってるけどきっと後で見ると恥ずかしいんだろうな。
int main(){ int rept; scanf("%d",&rept); LOOP(rept){ int sub, money, year, i, j, n, pat, cnst, ans=0, cur; double multi; vector< pair<double, int> > fukuri, tanri; scanf("%d%d%d",&money,&year,&n); REP(i,n){ scanf("%d%lf%d",&pat,&multi,&cnst); if(pat) fukuri.PB(MP(multi,cnst)); else tanri.PB(MP(multi,cnst)); } REP(i,SZ(fukuri)){ cur = money; REP(j,year){ cur += (int)(cur*fukuri[i].fs) - fukuri[i].sc; } ans = max(ans, cur); } REP(i,SZ(tanri)){ cur = money; sub = 0; REP(j,year){ sub += (int)(cur*tanri[i].fs); cur -= tanri[i].sc; } ans = max(ans, cur+sub); } printf("%d\n",ans); } return 0; }