知恵袋の群数列の問題をもう一問、Pythonで解いてみました。今度のはちょっと難しいかな。(^_^;
数列 1/1, 1/2, 2/2, 3/2, 1/3, 2/3, 3/3, 4/3, 5/3, 1/4・・・・
とあり、初項からK項までの和が200を超えるような最小値Kを求めなさい。
第i群の項数は、2i-1 [個]で、第i群のj番目の項は、次式で表されます。
また、群数列の第i群のj番目の項が原数列の第k項だとすると、次式が成り立ちます。
ちなみに、第m群のn番目の項までの和Sは、次式のようになります。
● GrpSeq2.py
# coding: UTF-8 # GrpSeq2.py from fractions import Fraction def main(): n = 0 while 1: n+= 1 a = [Fraction(j,i) for i in range(1,n+1) for j in range(1,2*i)] if sum(a)> 200: break # print(n) k=0 while 1: k+= 1 if sum(a[:k])> 200: break print(k) if __name__ == '__main__': main()
●実行結果
207
- 作者: 辻真吾
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/24
- メディア: 大型本
- 購入: 19人 クリック: 199回
- この商品を含むブログ (59件) を見る