python学習4週目:関数と再帰関数・ジョブ2014224


1プログラムを作成して、以下のテーマを完成します:(1点)
タイトル内容:
1つのフィボナッチ数列の上位10項は、1,2,3,5,8,13,21,34,55,89であり、最も大きい項の値がnを超えないフィボナッチ数列について、偶数の項の和を求める.
入力形式:
正の整数n、例えば100.
出力フォーマット:
2+8+34=44のような偶数の値の合計.
サンプルを入力:
100
出力サンプル:
44
時間制限:500 msメモリ制限:32000 kb
説明:フィボナッチ数列関数は再帰呼び出しに属するため、重複する計算が多く、計算に使用する時間が多く、テストプラットフォームでテストタイムアウトしているため、自分で書き換え、ループで計算を行う.
フィボナッチ数列関数:
def fib(n):
if n == 0 or n == 1:
return 1
else:
return fib(n - 1) + fib(n - 2)

sum = 0
i = 0
num =  int(raw_input())
while fib(i)  
  



def fib_qiujie(n):
    result = 0
    sum = 0
    i = 0
    tmp1 = 0
    tmp2 = 0
    while result  1:
            if result % 2 == 0:
                sum += result
            result = tmp2 +tmp1
            tmp1 = tmp2
            tmp2 = result
        i += 1

    print sum

num = int(raw_input())
fib_qiujie(num)

2
プログラムを して、 のテーマを します:(2 )
タイトル :
1800 1 1 が であることが られている 、 された と について、 の の が です.
:
と を す2 の
フォーマット:
、0は を します
サンプルを :
2033
12
サンプル:
6
:500 msメモリ :32000 kb
def is_leap_year(Year):
     if Year % 4 == 0 and Year % 100 != 0 or Year % 400 == 0:
         return True
     else:
         return False

def  year_month_days(Year, Month):
    if Month in (1, 3, 5, 7,  8, 10, 12):
        return 31
    elif Month in (4, 6, 9, 11):
        return 30
    elif is_leap_year(Year):
        return 29
    else:
        return 28

def  year_days(Year):
    if is_leap_year(Year):
        return 366
    else:
        return 365
        


def  weekday_year_month(Year, Month):
    Weekday = 2              
    for year in range(1800, Year):
        Weekday = (Weekday + year_days(year) ) % 7
        
    for month in range(1, Month + 1):
        Weekday = (Weekday + year_month_days(Year, month)) % 7
    
    print Weekday


Y = int(raw_input())
M = int(raw_input())   

weekday_year_month(Y, M)

3
プログラムを して、 のテーマを します:(2 )
タイトル :
ハノータゲームでは,タワーA のn の をタワーBを してタワーCに することを むと, に されたnに して の が えられる.
:
の n
フォーマット:
するには
サンプルを :
2
サンプル:
Move 1 from A to B
Move 2 from A to C
Move 1 from B to C
:500 msメモリ :32000 kb
def hanoi(n, A, B, C):
    if n == 1:
        print 'Move', n, 'from', A, 'to', C
    else:
        hanoi(n - 1, A, C, B)
        print 'Move', n, 'from', A, 'to', C
        hanoi(n - 1, B, A, C)
  
num = int(raw_input())
hanoi(num, 'A', 'B', 'C')