Меню сайта

Категории раздела
Готовимся к олимпиаде по программированию (задачи взяты с сайта http://olimpiada.com.ru) [36]
Решение олимпиадных задач по программированию
Готовимся к олимпиаде по математике [3]
Решение олимпиадных задач по математике

Мини-чат

Наш опрос
Оцените мой сайт
Всего ответов: 2678

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


Главная

Регистрация

Вход
Вы вошли как Гость | Группа "Гости" | RSS


Личный сайт учителя математики и информатики

Фоновой Натальи Леонидовны



Воскресенье, 29.12.2024, 08:30
Главная » Файлы » Внеурочная деятельность » Готовимся к олимпиаде по программированию (задачи взяты с сайта http://olimpiada.com.ru)

Абракадабра
14.02.2012, 08:51

Условие:
Последовательность из латинских букв строится следующим образом. Вначале она пуста. На каждом последующем шаге последовательность удваивается, после чего к ней слева дописывается очередная буква латинского алфавита (a, b, c, ...). Ниже приведены первые шаги построения последовательности:

Вначале. Пустая последовательность.
Шаг 1. a.
Шаг 2. baa.
Шаг 3. cbaabaa
Шаг 4. dcbaabaacbaabaa.
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

Требуется написать программу, которая по заданному числу N находит символ, который стоит на N-ом месте в последовательности, получившейся после 26-го шага.

Сокращенное условие:
Из латинских букв некоторым (см.подробное условие) образом строится последовательность. Требуется написать программу, которая по заданному числу N находит символ, который стоит на N-ом месте в последовательности, получившейся после 26-го шага.

Технические условия:
Ограничение по времени тестирования: по 1 секунде на один тест.

Формат входных данных:
Входной файл INPUT.TXT содержит в первой строке число N (1<=N<226).

Формат выходных данных:
В выходном файла OUTPUT.TXT записывается символ, стоящий в позиции N получившейся последовательности.

Примеры входных и выходных файлов:
Input.txt
4

Output.txt
w

Решение:
---------- cut ----------
Задачу надо решать методом возврата. Этот метод использовался в задаче "Последовательность". Надеюсь, что все будет понятно после прочтения программы.
---------- cut ----------

var
k : integer;
n, p : longint;
inp, out : text;
begin
assign(inp,'input.txt'); reset(inp);
assign(out,'output.txt'); rewrite(out);
readln(inp,n);
p:=2; for k:=2 to 25 do p:=p*2;
k:=0;
while n>1 do
begin
k:=k+1;
if n>p then n:=n-p else n:=n-1;
p:=p div 2
end;
writeln(out,chr(ord('z')-k));
close(out)
end.
Категория: Готовимся к олимпиаде по программированию (задачи взяты с сайта http://olimpiada.com.ru) | Добавил: admin
Просмотров: 3165 | Загрузок: 0 | Рейтинг: 5.0/2
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Поиск

Кнопка сайта

Одна кнопка

время жизни сайта

Сайт участвует
конкурс сайтов 

Новости образовани

Фраза дня

Web-мастеру

OperaFirefoxGoogle ChromeDownload Master
QIPSkypeµTorrentTeamViewer
Dr.Web CureITAvira AntiVirTotal CommanderCDBurnerXP
PicasaIrfanViewCheMaxDAEMON Tools
AIMPKMPlayerBSplayerK-Lite Codec Pack

Установить себе такой Блок
Скрипты и HTML для uCOz

Раскрутка сайта
Graffiti Decorations(R) Studio (TM) Site Promoter

Copyright MyCorp © 2024
/td>