Форум программистов, компьютерный форум CyberForum.ru

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

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

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

30.07.2013, 12:45. Просмотров 645. Ответов 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 минуты
Ап. Проблема ещё актуальна.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2013, 12:45     Найти ошибку в решении задачи "Шифровка" (acmp)
Посмотрите здесь:

Найти ошибку в решении "Числа - палиндрома" (задача с 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. не могу понять,как в цикле фо задать так,что бы в формуле...

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

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

Найти ошибку "Нарушение прав доступа при чтении" - C++
Необработанное исключение в &quot;0x504407bf (msvcr100d.dll)&quot; в &quot;lab5.exe&quot;: 0xC0000005: Нарушение прав доступа при чтении &quot;0x00000064&quot; int...

Найти ошибку в коде. Выдает "line 55 expresion str!=null" - C++
Ребятки помогите пожалуйста , вылетает вот такая ошибка :line 55 expresion str!=null //Melnik M . V . #include &lt;stdio.h&gt; #include...

Элементарно. Но ошибку найти не могу. Вывод имени "Jim" на экран - C++
Напишите операторы, выводящие на экран имя Jim. #include &lt;iostream&gt; using namespace std; int main() { char charvar = 'Jim';...

Преобразование последовательности - 2 (задача с 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...

Есть ли в структуре человек, чья фамилия начинается на букву "B". Найти ошибку - C++
Суть функции: проверить есть ли в структуре человек чья фамилия начинается на букву &quot;B&quot; и вывести его ФИО и дату рождения на экран, если...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
5593 / 2627 / 240
Регистрация: 01.11.2011
Сообщений: 6,461
Завершенные тесты: 1
30.07.2013, 13:00     Найти ошибку в решении задачи "Шифровка" (acmp) #2
Цитата Сообщение от nuts23 Посмотреть сообщение
Ап. Проблема ещё актуальна.
Так. И куда вы продвинулись? Выяснили была ли проблема в нахождении не минимального знаменателя или в чем-то другом все же? (4.14)
Yandex
Объявления
30.07.2013, 13:00     Найти ошибку в решении задачи "Шифровка" (acmp)
Ответ Создать тему
Опции темы

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