ABC138 B - Resistors in Parallel

備忘録

問題

atcoder.jp

回答

import sys
import os
 
 
def main():
    if os.getenv("LOCAL"):
        sys.stdin = open("input.txt", "r")
 
    N = int(sys.stdin.readline().strip())
    AList = list(map(int, sys.stdin.readline().split()))
 
    s = [1/a for a in AList]
    print(1/sum(s))
 
 
if __name__ == '__main__':
    main()

考え方

配列Aの値が分母となる。
そのため、配列A値をfor文で順に取り出す。
取り出した値(a)で1を割ることで、分数から小数点数型にすることができる。
あとはすべてのaを小数点数型にした値の合算で1を割ることで答えを求めることができる。

ちなみに、s = [1/a for a in AList]はワンラインで配列を作成する書き方。
配列AListの値を順に取り出し(a)、1/aの結果を配列sの末尾に追加している。

参考:Pythonのリスト内包表記=>[]や{} - あれもPython,これもPython