![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 03.06.2011
Сообщений: 33
|
![]()
Решал сегодня олимпиаду. Долго сидел над одним заданием, но так и не решил, но очень интересно.
Задача большая я постараюсь сократить. Дизайнер сделал шкаф с полочками для ключей и повесил его за один край (т.е. он висит как ромб). Нумерация ячеек идет слева направо и сверху вниз. Пришли рабочие и повесили его нормально квадратом. Входные данные - вводиться число от 1 до 30. (Это число ячеек с одной стороны т.е. если возвести в квадрат, то получим кол-во ячеек). Выходные данные - должны быть выставлены цифры с номерами ячеек. (Пример - если ввели 2 то ответ "в первой строке 1 3 и на следующей строке 2 4". Если ввели 3 то ответ " первая строка 1 3 6, вторая 2 5 8, третья 4 7 9). P. S. если не понятно, могу картинку нарисовать. P.P.S. думаю тут решается двумерными массивами. |
![]() |
![]() |
![]() |
#2 | ||
АльTRUEи$т
Форумчанин
Регистрация: 19.03.2009
Сообщений: 784
|
![]() Цитата:
И свои попытки решения! Цитата:
|
||
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 03.06.2011
Сообщений: 33
|
![]()
http://s017.radikal.ru/i436/1111/bb/7c6833a1cd31.jpg
Свои попытки я с психу поудалял. Да и смотреть там было нечего. Хотел через двумерный массив зайти, но там заранее константы выставляются, а тут пользователь сам задает таблицу. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 13.12.2007
Сообщений: 788
|
![]()
так ведь тут все просто
первая строка всегда будет начинаться с 1 и содержать n чисел, каждое последующее число равно предыдущее+индекс текущего+номер строки-1, т.е. 1 строка: 1 (1+2)=3 (3+3)=6 (6+4)=10 и т.д. Каждая последующая строка высчитывается по тому же алгоритму, но первое число высчитывается как (первое число пред. строки)+(номер текущей строки)-1, т.е. 1 строка: 1 3 6 ... 2 строка: (1+2-1)=2 (2+2+2-1)=5 (5+3+2-1)=9 ... 3 строка: (2+3-1)=4 ... и так далее Строк так же будет n UPD: для элементов нижней половины ромба алгоритм немного другой, пояснять алгоритм не буду, это условие выделено жирным шрифтом в коде ниже P.S. олимпиадные задачи они такие, оптимальное решение без логики не построишь)
благодарность - сюда (не забываем писать от кого)
Последний раз редактировалось Zer0; 29.11.2011 в 08:11. |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 13.12.2007
Сообщений: 788
|
![]()
Пример для паскаля
Код:
благодарность - сюда (не забываем писать от кого)
Последний раз редактировалось Zer0; 29.11.2011 в 08:09. |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
![]()
Зер0 прав, тут все просто, и никаких двумерных массивов не надо. Но я бы сказал, тут все ЕЩЕ проще, и ничего считать в цикле не надо. А надо просто выводить (в двойном цикле, ессно) по формулам. А формулы выводятся из формул для суммы арифметической прогрессии.
Код:
Предпочитаю на "ты".
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 03.06.2011
Сообщений: 33
|
![]()
Спасибо всем за ответы. Жаль сам до этого не додумался.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Олимпиадное задание. | ALex25153 | Помощь студентам | 4 | 25.11.2011 20:32 |
олимпиадное задание | Ponkole | Помощь студентам | 8 | 15.02.2011 10:19 |
Олимпиадное программирование | VovanZ | Свободное общение | 4 | 02.03.2010 13:43 |
Олимпиадное задание) | AleX CODER | Общие вопросы Delphi | 12 | 02.12.2008 21:26 |