de1979nis
?>

Уисполнителя аккорд две команды, которым присвоены номера: 1. прибавь 2 2. умножь на x где x – неизвестное положительное число. выполняя первую из них, аккорд добавляет к числу на экране 2, а выполняя вторую, умножает это число на x. программа для исполнителя аккорд – это последовательность номеров команд. известно, что программа 12211 переводит число 1 в число 52. определите значение x.

Информатика

Ответы

Yeremeev
((1+2)*x)*x+2+2 = 52
3*x*x+4 = 52
3*x*x = 48
x = 4 (или x=-4)
1+2 = 3 (1)
3*4 = 12 (2)
12*4 = 48 (2)
48+2 = 50 (1)
50+2 = 52 (1)
ответ: 4 (или -4)
zbellatriks

2018

Сообщений: 27

15.03.2019, 18:38 3

Лучший ответ Сообщение было отмечено CyberNinjaProg как решение

Решение

Я бы мог тебе написать готовый код, но для начала просто алгоритм объясню.

Во первых, симметричность такой последовательности разобъём на 2 типа - чётная и нечётная.

Чётная последовательность делиться на две одинаковые отражённые горизонтально части. Например, "12122121".

Нечётная делиться таким же образом, только посередине есть цифра не имеющая пары. Например, "123454321".

Соответственно нам надо проверить входную последовательность на возможность создать наикратчайшую симметричную последовательность одного из двух типов.

Конкретный алгоритм следующий:

//Для чётно-симметричной последовательности

Берём половину входной последовательности (если её длина нечётная, берём с округлением в большую сторону), и начинаем по одному её элементу, от последнего и до первого, сравнивать их с элементами второй половины, но только взятых в порядке слева-направо.

То-есть, от последовательности 12122, берём 121, и сравниваем с 22: i[2] == i[3] (1 == 2).

Сравниваем так до тех пор, пока последовательность не закончиться. Тогда, оставшаяся несрАвненной последовательность цифр взятой в порядке справа налево и будет ответом (вместе с количеством этих цифр).

Если же при сравнении, цифры оказались разными, начинаем всё сначала, только с цифры на одну правее.

То-есть теперь берём уже не 121, а 1212, и делаем всё предыдущее снова. Если последовательность закончилась, то есть если мы например взяли уже 12345 от 12345, то сравнивать уже ничего не нужно, надо просто взять всю последовательность в обратном порядке - "1234554321".

//Для нечётно-симметричной последовательности

Делаем всё то же самое, что и для чётно-симметричной последовательности, только начинаем сравнивать не с цифры, следующей той, у которой мы разделили, а через одну.

То-есть, для входной последовательности 12345, берём 123 и начинаем сравнивать цифру 3 с цифрой 5, а не с цифрой 4.

Если же последовательность закончилась, берём всю последовательность кроме последней цифры в обратном порядке, это и будет ответ.

//Итог

Для того, чтобы найти правильный ответ, надо найти и чётную, и нечётную последовательности. Затем сравнить длину обоих ответов. Кратчайший ответ будет верным.

kep92

#include <iostream>

using namespace std;

int main()

{

   int N;

   cin >> N;

   int* arr = new int[N];

   for (int i(0); i < N; ++i) cin >> arr[i];

   int count(N - 1);

   int result = 0;

   for (; count >= 0 && result < arr[count]; --count) {

       if (count > 0) result += arr[count] - arr[count - 1];

   }

   int sum = 0;

   for (int i(count + 1); i < N; ++i) sum += arr[i];

   result = sum / (N - count);

   if (sum > result*(N - count)) ++result;

   cout << result;

}

Объяснение:

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Уисполнителя аккорд две команды, которым присвоены номера: 1. прибавь 2 2. умножь на x где x – неизвестное положительное число. выполняя первую из них, аккорд добавляет к числу на экране 2, а выполняя вторую, умножает это число на x. программа для исполнителя аккорд – это последовательность номеров команд. известно, что программа 12211 переводит число 1 в число 52. определите значение x.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

a-lossev111
stailwomen31
info122
Валерия Воробьева396
kryshtall2276
ВасилийКлимова1695
Anna_Kamil
Ирина-Макаркина253
zuzazuza61
Коновалова1705
master-lamaster
inaine73
NikolaevichIP1136
kassel1b
Viktoriya