-4

これは私の課題です:

トリプレット a, b, c ∈ {x | x ∈ Z かつ 450 > x > 0}

次の関係が満たされるように:

  1. a = b が偶数の場合: c+11 ただし、b が奇数の場合: 2c-129

  2. b = (a * c) mod 2377

  3. c = (k=0 から a-1 までの b-7k の合計) + 142

これは私がこれまでに試したことです:

代替案 1:

for a in range(1,449):
    for b in range(1, 449):
        for c in range(1, 449):

            #a
            if b%2==0:
                a=c+11

            elif b%2!=0:
                a=2*c-129

            #b
            b = (a*c)%2377


            #c
            k = 0
            c0=0
            upper = a-1
            for i in range(0, upper+1):
                c0 = b-7*i
                #k+=1
            c = c0 + 142
            print a, b, c

代替案 2:

def a_func(x):
    if (b_func(x)%2==0):
        return c_func(x)+11
    else:
        return 2*c_func(x)-129

def b_func(x):
    return a_func(x)*c_func(x) % 2377

def c_func(x):
    k=0
    c0=0
    upper = a_func(x)-1
    for i in range(0, upper+1):
        c0 = b_func(x) - 7 * k
        k+=1
    return c0+142

def all(x):
    return a_func(x), b_func(x), c_func(x)

for x in range(1, 449):
    print all(x)

それらのどれも機能していないようです。

4

1 に答える 1

0

もう少しの努力を見せてください。最初のプログラムは、449*449*449 行の出力を表示します。明らかに何かが完全に間違っています。

このタスクの背後にある考え方は、3 つの方程式が成り立つかどうかを確認する必要があるということです。

したがって、メインプログラムは次の構造にすることができます。

for a in range(1,449):
    for b in range(1, 449):
        for c in range(1, 449):
            if equation_one_holds and equation_two_holds and equation_three_holds:
                print a, b, c

ここでのタスクは、チェックを実装することです。ヒントとして、equation_two_holds可能性があります(b == (a * c) % 2377)equaltion_one_holdsとのチェックはequation_three_holdsもう少し複雑ですが、少し努力すれば管理できます。

于 2015-02-05T22:13:24.427 に答える