備忘録

まとめておきたいことのメモ 主にプロコンのこと

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を答えにしてる、ってぐらいです。