Форум » Динамическое программирование » 23 pзадание № 170 » Ответить

23 pзадание № 170

bar_03: подскажите в чем ошибка, ответ не сходится. [pre2] s1=2 s2=3 b=[] a=[s1+3,s2] b.append(a) a=[s1*4,s2] b.append(a) a=[s1,s2+5] b.append(a) a=[s1,s2*2] b.append(a) for i in range(0,4): l=len(b) for j in range(0,l): t=b[0] a=[t[0]+3,t[1]] b.append(a) a=[t[0]*4,t[1]] b.append(a) a=[t[0],t[1]+5] b.append(a) a=[t[0],t[1]*2] b.append(a) del b[0] print(b) a=[] z=0 for k in b: t=k[0] t1=k[1] #записываю элементы пары по возрастанию if t>t1: l=t t=t1 t1=l k=[t,t1] if k not in a: # если пары нет в массиве, добавляю a.append(k) for k in a: # НОД t=k[0] t1=k[1] while t!=t1: if t>t1: t=t-t1 else: t1=t1-t if t ==1: z+=1 print(k) print(z) [/pre2] Вот теперь сходится с ответом.

Ответов - 2

Поляков: [pre2] def coprime(a, b): while b: a, b = b, a % b return a == 1 pairs = set() NUM_CMD = 5 def Landysh( a, b, n = 0 ): global pairs if n == NUM_CMD: if coprime(a, b): pairs.add( (a, b) if a < b else (b, a) ) return Landysh( a + 3, b, n + 1 ) Landysh( a * 4, b, n + 1 ) Landysh( a, b + 5, n + 1 ) Landysh( a, b * 2, n + 1 ) Landysh(2, 3) print( len(pairs) )[/pre2]

bar_03: о боже 1 команда прибавляет 3, а я прибавляла 1. Но ваше решение красивое и компактное. Спасибо за ответ, только у вас увидела, что прибавляю не то, два дня искала ошибку :(



полная версия страницы