Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2013, 22:27   #1
Izobara
Форумчанин
 
Аватар для Izobara
 
Регистрация: 26.12.2012
Сообщений: 227
По умолчанию Зазеркалье - олимпиадная задача

Очень сложная задача (для меня). На одном форуме пыхтели - так и не помогли.
Цитата:
Назовем N-значное число, не содержащее ведущих незначащих нулей, числом из Зазеркалья,
если это число можно написать на бумаге, изображая цифры так, как их пишут на электронных
табло (из палочек, как на калькуляторах), а потом поднести к этому изображению зеркало и увидеть в нем то же самое
число. При этом все цифры полностью мы должны увидеть именно в зеркале, в неискаженном
виде, а число целиком прочитать, как обычно, слева направо. Единственное, что может выглядеть
по-другому, это расстояние между цифрами числа.
Вася выписал на бумаге некоторые цифры одного из N-значных чисел. Позиции этих цифр
в числе он также зафиксировал. Помогите ему определить, сколько различных чисел из Зазеркалья
он может записать, заполняя всеми допустимыми способами остальные позиции.
Формат входного файла
В первой строке входных данных записано одно натуральное число N (1 <= N <= 30) . Во второй
строке находятся ровно N символов, часть из которых цифры, а часть символы ' * ' , обозначающие
свободные места. Строка заканчивается символом перевода строки.
Формат выходного файла
Выведите количество N-значных чисел из Зазеркалья, которые можно получить, заполняя свободные места цифрами.
Примеры
Ввод
2
*0
Вывод
3
Ввод
4
1*7*
Вывод
0
Примечание
Условие этой задачи нужно понять буквально.
А для того чтобы проверить ответ к первому примеру, можно перебрать все варианты на бумаге
и подносить к ним зеркало, пока не станет понятно, какие 3 варианта являются подходящими.
Я пыхтел месяц назад: прошло 20 тестов. Сейчас проходит 2 - просто после первой ошибки выбивать стало.
Код:
var N,a,number,inn,j:longint;
     count:longint;
     valid:boolean;
     s:string;
     procedure Logic;
      begin
          a:=1;
          while a<=number do
          begin
            count:=count*4;
            a:=a+1;
          end;
          if s[1]='*' then
            begin
            inn:=1;
              for j:=1 to (number-1) do
                  inn:=inn*4;
                 count:=count-inn;
            end;
 
 
            if valid=false then
                count:=0;
 
      end;
     begin
     number:=0;
     //Для задачи: числами Зазеркалья могут быть "0,1,3,8"
     count:=1;
     s:='';
     valid:=false;
      readln(N);
      Readln(s);
       for a:=1 to N do begin
           if s[a]='*' then number:=number+1;
       end;
       for a:=1 to length(s) do
         begin
          if (s[a]='0') or (s[a]='1') or (s[a]='3') or (s[a]='8') or (s[a]='*') then
           begin
             valid:=true;
           end
               else
           begin
             valid:=false;
             Logic;
             Break;
          end;
         end;
          ///////////////
         Logic;
 
         ///////////////
 
                 Writeln(count);
     end.
"I believe I can fly" - C++, "What do you want from me" - Delphi, "Yesterday" - Pascal, "Let it be" - C#... Программисты-музыканты-полиглоты поймут
Izobara вне форума Ответить с цитированием
Старый 22.01.2013, 23:45   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,322
По умолчанию

У нас как-то не положено решать задачи идущих в данный момент олимпиад
(зарегистрировался ради интереса)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 23.01.2013, 14:59   #3
Izobara
Форумчанин
 
Аватар для Izobara
 
Регистрация: 26.12.2012
Сообщений: 227
По умолчанию

Ну, мне как бы все равно на нее не попасть... Я вне конкурса участвую. Через 2 дня конец. Надеюсь, поможете?
"I believe I can fly" - C++, "What do you want from me" - Delphi, "Yesterday" - Pascal, "Let it be" - C#... Программисты-музыканты-полиглоты поймут
Izobara вне форума Ответить с цитированием
Старый 23.01.2013, 15:43   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сейчас проходит 2 - просто после первой ошибки выбивать стало
В чем выражается ошибка, на какой строке и для каких исходных данных?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.01.2013, 16:25   #5
Izobara
Форумчанин
 
Аватар для Izobara
 
Регистрация: 26.12.2012
Сообщений: 227
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
В чем выражается ошибка, на какой строке и для каких исходных данных?
Интересный вопрос. Мне бы самому знать Ответ неправильный. Тут сама логика не доделана. Наверное, надо еще что-то рассматривать, типа цифры 2 и 5. Не пойму.
Тема задачи на 4 страницы.
"I believe I can fly" - C++, "What do you want from me" - Delphi, "Yesterday" - Pascal, "Let it be" - C#... Программисты-музыканты-полиглоты поймут

Последний раз редактировалось Izobara; 23.01.2013 в 16:50.
Izobara вне форума Ответить с цитированием
Старый 23.01.2013, 17:40   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Тут видимо непонятки в условии. Я понял так - при зеркальном отображении 0,1,8 переходят сами в себя, 2 в 5 и 5 в 2. И лево меняется местами с право.

Пример таких переворотышей:
1111111
18081
21015

т.е. если цифр нечетное количество - в центре может быть 0,1,8
если на позиции k слева стоит 0,1,2,5,8 то на этой же позиции справа должно быть 0,1,5,2,8 соответственно

По поводу 0 - может ли стоять в начале - не известно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.01.2013, 18:12   #7
Izobara
Форумчанин
 
Аватар для Izobara
 
Регистрация: 26.12.2012
Сообщений: 227
По умолчанию

Вот, я думал, спросил у судей. Ответ: "Без коментариев"
"I believe I can fly" - C++, "What do you want from me" - Delphi, "Yesterday" - Pascal, "Let it be" - C#... Программисты-музыканты-полиглоты поймут
Izobara вне форума Ответить с цитированием
Старый 25.01.2013, 20:48   #8
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,318
По умолчанию

Аватар
Цитата:
По поводу 0 - может ли стоять в начале - не известно
Izobara
Цитата:
Вот, я думал, спросил у судей. Ответ: "Без коментариев"
Но в начале поста читаем:
Цитата:
Назовем N-значное число, не содержащее ведущих незначащих нулей, числом из Зазеркалья, ...
В месте с тем, а почему не рассматривается цифра 3?
В условии задачи не определено, где надо поставить зеркало - слева, справа, снизу или сверху.
Соответственно, ответ для приведенного примера:
Цитата:
Примеры
Ввод
2
*0
Вывод
3
неверен. При установке зеркала сверху можно получить числа
10, 20, 30, 50, 60, 80, 90.
Или я где-то не до понимаю ...

Как-то так ....
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 25.01.2013, 21:08   #9
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Я тоже чего-то не понимаю.. То что сказал Аватар, мне кажется верным..
Но пример теста :
Цитата:
2
*0
И ответ к нему вводят меня в ступор..
Почему ответ 3?
Я могу найти только одно число - 00. Все.. откуда берется 3 - загадка..
Poma][a вне форума Ответить с цитированием
Старый 25.01.2013, 21:16   #10
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,318
По умолчанию

Блин!
А ларчик ...
Цитата:
а потом поднести к этому изображению зеркало и увидеть в нем то же самое число.
Т.е. из набора:
Цитата:
При установке зеркала сверху можно получить числа
10, 20, 30, 50, 60, 80, 90.
только числа
10, 30, 80
дадут
Цитата:
то же самое число.

Т.о. зеркало можно поднести с любой стороны.

Poma][a
Спасибо за подсказку!

А ведь в исходном сообщении про тройку ...
Читать надо было мне повнимательней.


Вроде так ....
Как-то так, ...

Последний раз редактировалось ViktorR; 25.01.2013 в 21:20.
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Олимпиадная задача Sanek_ntsk Помощь студентам 4 09.11.2011 23:03
Олимпиадная задача. masashama Общие вопросы C/C++ 19 27.10.2011 14:52
олимпиадная задача danzel1 Общие вопросы C/C++ 2 21.10.2011 15:15
Олимпиадная задача. _-Re@l-_ Паскаль, Turbo Pascal, PascalABC.NET 1 09.12.2010 20:53
Олимпиадная задача Carbon Общие вопросы C/C++ 2 23.05.2007 22:07