Картузов-Алексей1252
?>

Заданы три числа x, y, z. если z< 0 , то p задать как максимальное из x и y. если z> =0, то р задать как минимальное из x, y. написать на c++

Информатика

Ответы

abcd138191

#include <iostream>

using namespace std;

float x,y,z,P;

int main(){

 cin>>x>>y>>z;

 if(z<0) P=x>y?x:y;

 else P=x<y?x:y;

 return 0;

}

shabunina17
В начале в строке находилось 333 троек по 8 плюс одна 8, всего 1000 восьмерок.
1. При выполнения цикла каждая из троек 8 будет заменена на одну 9. Значит у нас получится строка длиной в 334 символа, где 333 девятки и последний символ - восьмерка
2. Далее 333 девятки заменятся на 111 восьмерок плюс последняя восьмерка - всего получим 112 восьмерок
3. Из 112 восьмерок получится 37 девяток и одна восьмерка
4. И 37 девяток получим 12 восьмерок плюс одна девятка и плюс последняя восьмерка
5. 12 восьмерок дадут 4 девятки плюс последние 9 и 8
6. И наконец получаем строку 8998
ответ: 8998
ЮрьевичКарпова1564
Наивный алгоритм: используя два вложенных цикла, проверить все подстроки, являются ли они палиндромами. Такой алгоритм будет работать O(|S|^2), что при ограничении |S| <= 10^5 потребует примерно 10^10 / 2 сравнений, что достаточно долго.

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

Однако задачу можно решить и за линейное время. Например, существует алгоритм Манакера, основанный на том, что можно использовать информацию, что часть строки является палиндромом. А именно, если в длинную-длинную строку-палиндром входит другая подстрока-палиндром, то можно не начинать проверку заново, а использовать уже имеющуюся информацию.

Пример 1: "длинная" подстрока-палиндром:
cbbaabbaabbc
в которой известна подстрока-палиндром. Тогда в строке есть симметричная подстрока-палиндром:
cbbaabbaabbc
Пример 2: "длинная" подстрока палиндром:
bbaabbaabbaa
Зная, что в ней есть подстрока-палиндром
bbaabbaabbaa,
можно явные сравнения для подстроки с центром в
bbaabbaabbaa
начинать уже с 
bbaabbaabbaa

Если не хочется писать самостоятельно, алгоритм Манакера легко находится.

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

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

Заданы три числа x, y, z. если z< 0 , то p задать как максимальное из x и y. если z> =0, то р задать как минимальное из x, y. написать на c++
Ваше имя (никнейм)*
Email*
Комментарий*

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

nastyakrokhina87
gamolml
nataliaprintroll
Aleksandr362
braigon974
Чунихина1586
Екатерина15
Стуканова УЧРЕЖДЕНИЕ1877
Tuzov
mishagoride885
bagrjashv41
Polina780
Svetlana395
gamolml
centrprof20