Official
A - 信号の減衰 / Signal Attenuation Editorial
by
A - 信号の減衰 / Signal Attenuation Editorial
by
MMNMM
Editorial for printing
初心者の方へ
- AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
- また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。
- C++入門 AtCoder Programming Guide for beginners (APG4b) は、競技プログラミングのための C++ 入門用コンテンツです。
- Python入門 AtCoder Programming Guide for beginners (APG4bPython) は、競技プログラミングのための Python 入門用コンテンツです。
この問題は、整数 \(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) # 最終的な強度を出力
posted:
last update:
