-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 = (b-7k 从 k=0 到 a-1 的总和) + 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 行输出。显然有什么完全错误的。

该任务背后的想法是,您必须检查三个方程式是否成立。

所以主程序可以是以下结构:

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 回答