AOJ-ICPC 2018
時間があったのでもう一問。
Princess's Gamble | Aizu Online Judge
ギャンブルの結果から当選者一人当たりの配当金を計算する問題。
総掛け金 * (1 - 控除率) / 当選者数 が答えになります…が、これを問題文から求めるのが一番大変でした。
これがわかればプログラム自体はすっとかけました。
答えです。
#include <cstdio> #include <iostream> #include <cmath> #include <ctype.h> #include <string> #include <sstream> #include <iostream> #include <algorithm> #include <cstdlib> #include <map> #include <queue> #include <utility> #include <vector> #include <set> using namespace std; int main() { int n, m, p; while(1){ cin >> n >> m >> p; if(n == 0) break; int x[100]; int sum = 0; for(int i = 0; i < n; i++){ cin >> x[i]; sum += x[i] * 100; } int ans; if(x[m - 1] == 0) ans = 0; else ans = (sum * (100 - p)) / (100 * x[m - 1]); cout << ans << endl; } return 0; }
特に言うことはないですね。当選者が一人もいなかったときは0で割り算することにならないよう場合分けして0を答えにしてる、ってぐらいです。