Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nuts23
0 / 0 / 0
Регистрация: 22.06.2013
Сообщений: 30
#1

Найти ошибку в решении задачи "Шифровка" (acmp) - C++

30.07.2013, 12:45. Просмотров 803. Ответов 1
Метки нет (Все метки)

Шифровка
(Время: 1 сек. Память: 16 Мб Сложность: 29%)

Разведкой был перехвачен ряд шифровок, которые передавал Джеймс Бонд. Известно, что каждое послание зашифровано методом циклического сдвига. Суть которого в том, что каждая буква заменяется на букву, отстоящую в алфавите от первой на определенном расстоянии. Это расстояние называется знаменателем шифра. Так, при знаменателе шифра 2 буква D превратится в F, буква Q – в S, а Z – в B. Известно, что Бонд использует знаменатели от 0 до 25, и составляет послания исключительно из заглавных букв английского алфавита. Знаменатели в шифровках постоянно меняются, так что расшифровать содержимое послания будет не просто. После тщательного анализа удалось примерно определить предмет посланий. Теперь для каждого послания точно известно одно из входящих туда слов.

Входные данные

В первой строке входного файла INPUT.TXT содержится строка с перехваченным посланием, а во второй строке – слово, которое обязательно присутствует в этом послании. Обе строки состоят только из заглавных английских букв и содержат не больше 40 символов.

Выходные данные

В выходной файл OUTPUT.TXT выведите расшифрованный текст, либо сообщение «IMPOSSIBLE», если разгадать шифровку невозможно. В тех случаях, когда расшифровка возможна с различными знаменателями, то следует вывести вариант с наименьшим таким значением.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <stdio.h>
#include <stdio.h>
#include <math.h>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
int main()
{
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    char A[41];
    char B[41];
    gets(A);
    gets(B);
    int d1;
    int d2;
    d2 = strlen(B);
    int i = 0;
    int j = 0;
    int k = 0;
    int z = 0;
    int d0;
    d0 = 10000;
    int imax = -1;
    while (A[i])
    {
        j = 0;
        k = i;
        z = 0;
        d1 = int(A[k])-int(B[j]);
        while (d1 == int(A[k++])-int(B[j++]) && A[k-1]!='\0' && B[j-1]!='\0')
        {
            ++z;
            if (z > imax) // imax - длина совпадения
            {
                imax = z;
                if (d1 < d0) // минимальный знаменатель
                    d0 = d1;
            }
            //printf("%d", int(A[k-1]));
        }
 
        ++i;
    }
    if (imax < d2)
        printf("IMPOSSIBLE");
    else
    {
        for (int i = 0; A[i]; ++i)
            printf("%c", char(int(A[i]-d0)));
    }
    return 0;
}
WA на 5 тесте. В обсуждении к задаче сказано, что ошибка в 5-ом, скорее всего, связана с тем, что программа находит не минимальный знаменатель.

Добавлено через 23 часа 24 минуты
Ап. Проблема ещё актуальна.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2013, 12:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти ошибку в решении задачи "Шифровка" (acmp) (C++):

Найти ошибку в решении "Числа - палиндрома" (задача с acmp) - C++
У меня WA на 4-ом тесте. #include &lt;stdio.h&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;cstdio&gt; #include &lt;algorithm&gt; ...

Ошибка в решении задачи "Судоку" (acmp) - C++
Здравствуйте. Моё решение: #include &lt;stdio.h&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;cstdio&gt; #include &lt;algorithm&gt; ...

Неточность в понимании условия задачи "Жук" (acmp) - C++
Моё решение: #include &lt;stdio.h&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;cstdio&gt; #include &lt;algorithm&gt; #include &lt;cstring&gt; ...

Почему происходит ошибка времени выполнения в решении задачи "Ход конем"? - C++
Добрый день! Я попытался решить одну задачку о шахматах. Проблема в том, что моя программа крашится с такой ошибкой: ...

найти ошибку в решении задачи! - C++
Условие: Дано натуральное число n. Вычислить: 1 + 2 + 4 + 8 + … + 2n. не могу понять,как в цикле фо задать так,что бы в формуле...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

1
SatanaXIII
Супер-модератор
Эксперт С++
5649 / 2693 / 252
Регистрация: 01.11.2011
Сообщений: 6,586
Завершенные тесты: 1
30.07.2013, 13:00 #2
Цитата Сообщение от nuts23 Посмотреть сообщение
Ап. Проблема ещё актуальна.
Так. И куда вы продвинулись? Выяснили была ли проблема в нахождении не минимального знаменателя или в чем-то другом все же? (4.14)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2013, 13:00
Привет! Вот еще темы с ответами:

Задача "Выпуклая оболочка" (acmp) - C++
Вот мой код, при проверке в системе WA на 6-ом тесте. Алгоритм - найти крайние точки и построить прямоугольник по ним. #include &lt;stdio.h&gt;...

Задача из Златопольского: "Найти числа с известным количеством делителей". Не могу найти ошибку - C++
Здравствуйте. Задача следующая: Найти все целые числа из промежутка от a до b, у которых количество делителей равно k. К примеру я взял...

Исправить ошибку C2079 "MiniPlayer::music" использует неопределенный class "MiniMusic" - C++
Приветствую. Ситуация следующая - есть 2 класса, оба используют друг друга. При компиляции вылезает ошибка: C2079 &quot;MiniPlayer::music&quot;...

Исправить ошибку в строках "case 3:zadacha(Uch,Pr,Ocen);break;" и " return 0;" - C++
#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;time.h&gt; #include&lt;iostream.h&gt; using namespace std; void gen_matr(char...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.