Невнятно как-то сформулировано - то индексы найти, то массива пишу, как понял. отдел +; использует вывод из ""; пер массив: ряд 15 из вещ; сч, найдено: цел; найденное, индексы: доступ к ряд из вещ; указ найдено : = 0; создать(индексы, размер(массив) - 1); от сч : = 1 до размер(массив) - 1 вып если массив[сч] = массив[0] то найденное[найдено] : = сч; увеличить(найдено) кон кон; если найдено = 0 то вывод.цепь("не найдено.") иначе создать(индексы, найдено); от сч : = 0 до найдено - 1 вып индексы[сч] : = найденное[сч] кон; найденное : = пусто кон кон .
yulyashka2142
06.12.2022
Ответ: 22 вариант на c++, но программа долго выполняется; как оптимизировать, я пока не знаю. #include < iostream> #include < sstream> #include < string> int main() { int k = 0; //счетчик 1016палиндромов for (int i = 16; i < = 10000000; i++) { int temp = i; std: : stringstream ss; //перевод 10чного числа в 16чную строку ss < < std: : hex < < temp; std: : string temp16(ss.; //проверяем, является ли 16чное число палиндромом bool t16 = true; int left_index = 0; int right_index = temp16.size() - 1; while (left_index < right_index) if (temp16[left_index++] ! = temp16[right_index--]) t16 = false; if (t16) { bool t10 = true; std: : ostringstream ost; //перевод 10чного числа в строку ost < < temp; std: : string temp10 = ost.str(); //проверяем, является ли 10чное число палиндромом int left_index = 0; int right_index = temp10.size() - 1; while (left_index < right_index) if (temp10[left_index++] ! = temp10[right_index--]) t10 = false; if (t10) k = k + 1; } } std: : cout < < "number of 1016-palindroms: " < < k < < std: : endl; return 0; }
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Сколько различных последовательностей длиной ровно в 6 символов можно составить из символов "*" и "#" ?