ニッケ日記

徒然なるままに書いています

pythonでreduceを使って特殊な総和を求める

 先日atcoderでこの様な問題を見かけました。

 i倍するという箇所がなければ、sum関数で求められるのですが、今回のケースでは難しそうです。

 そこで、reduceを使って書いてみました。

sigma = reduce(lambda acc, cur: [cur[0], acc[1]+(cur[0]+1)*cur[1]], list(enumerate(my_list)))
print(sigma)

 入力と出力例

my_list = [2, 3, 1, 1]

> [3, 15]

参考: https://atcoder.jp/contests/abc267/tasks/abc267_c