печать последовательности в другом порядке - PullRequest
0 голосов
/ 29 мая 2020

Я могу понять лог c здесь для приведенного ниже шаблона, но не могу понять способ реализации, пожалуйста, может кто-нибудь мне здесь помочь. столбец все до 5, затем второй столбец после 5, оставляя первую и последнюю строку и т. д.)

1 
2 6 
3 7 9 
4 8 
5

1 Ответ

1 голос
/ 29 мая 2020

Попробуйте следующее:

n = int(input())

for i in range(1, (n//2)+2):
    for j in range(i):
        print(i + ((n - 1) * j) - (j * (j - 1)) , end=' ')
    print()

for i in range((n//2)+2, n + 1):
    for j in range(n - i + 1):
        print(i + ((n - 1) * j) - (j * (j - 1)), end=' ')
    print()

Вывод:

n = 9
1 
2 10 
3 11 17 
4 12 18 22 
5 13 19 23 25 
6 14 20 24 
7 15 21 
8 16 
9 

Logi c

n = 9
1              |
2 10           |(10 - 2) = 8
3 11 17        |(11 - 3) = 8, (17 - 11) = 6
4 12 18 22     |(12 - 4) = 8, (18 - 12) = 6, (22 - 18) = 4
5 13 19 23 25  |(13 - 5) = 8, (19 - 13) = 6, (23 - 19) = 4, (25 - 23) = 2
6 14 20 24     |(14 - 6) = 8, (20 - 14) = 6, (24 - 20) = 4
7 15 21        |(15 - 7) = 8, (21 - 15) = 6
8 16           |(16 - 8) = 8
9              |

Например, в строке 5

  • первое число 5 + ((n - 1) * 0) - (0 * -1) = 5
  • следующее значение 5 + ((n - 1) * 1) - (1 * 0) = 13
  • следующее значение 5 + ((n - 1) * 2) - (1 * 2) = 19
  • следующее значение 5 + ((n - 1) * 3) - (2 * 3) = 23
  • следующее значение 5 + ((n - 1) * 4) - (3 * 4) = 25

выше 5 - это i значение, а 0,1,2,3,4 - j значения

обобщенная формула для расчета стоимости i + ((n - 1) * j) - (j * (j - 1))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...