Official

A - 信号の減衰 / Signal Attenuation Editorial by MMNMM


初心者の方へ

この問題は、整数 \(N,M\) を入力し、続けて \(N\) 個の整数を読んで順に操作を行うことで解くことができます。

多くのプログラミング言語では、整数 \(a,b\ (b\ne0)\) に対して \(\left\lfloor\dfrac ab\right\rfloor\) を求める方法が用意されています。 これを使うことで、現在の信号の強度 \(C\) から、次の信号の強度 \(\left\lfloor\dfrac{C\times A _ i}{100}\right\rfloor\) を求めることができます。

倍精度浮動小数点数(C++ における double)などを使って計算すると、正しい答えが求められない場合があることに注意してください。

実装例は以下のようになります。

#include <iostream>
using namespace std;

int main() {
    int N;
    long M;
    cin >> N >> M;

    for (int i = 0; i < N; ++i) {
        int A;
        cin >> A; // A を読み込んで
        M = M * A / 100; // 信号の強度を更新する
    }

    cout << M << endl; // 最終的な強度を出力
    return 0;
}
N, M = map(int, input().split())
A = list(map(int, input().split()))

for a in A: # それぞれの a について順番に
    M = M * a // 100 # 信号の強度を更新する

print(M) # 最終的な強度を出力