Студент Алихан обожает математику. Самые любимые его числа - это палиндромы. Когда Алихан видит число, которое не является палиндромом, он расстраивается. Чтобы поднять настроение Алихану, вы можете найти такое число, которое будет больше изначального и при этом палиндромом. Если Алихан сразу видит палиндром, он уже счастлив. Помогите нам сделать Алихана счастливым.
Палиндром - это число, которое читается слева направо и справа налево одинаково.
Input Format
Вводится одно целое натуральное число N.
Constraints
N состоит не более, чем из 100 000 цифр.
Output Format
Выведите одно число - ответ на задачу.
Sample Input 0
1221
Sample Output 0
1221
Sample Input 1
1234
Sample Output 1
1331
C/C++
Решение задач по с++
#include <iostream>
#include <string>
using namespace std;
bool is_palindrome(string& num) {
return num == string(num.rbegin(), num.rend());
}
string inc(const string& num) {
string box;
int n = 1;
for (auto dig : num) {
dig += n;
if (dig == 58) {
dig -= 10;
n = 1;
} else {
n = 0;
}
box.push_back(dig);
}
return string(box.rbegin(), box.rend());
}
string repairs(string& num) {
auto mid = num.length() >> 1;
auto head = string(num.begin(), num.begin() + mid);
auto tail = string(num.begin() + mid, num.end());
auto rev = string(head.rbegin(), head.rend());
if (head.length() == tail.length()) {
if (rev > tail) return head + rev;
else {
auto beg = inc(rev);
return beg + string(beg.rbegin(), beg.rend());
}
} else {
auto beg = string(num.begin() + mid + 1, num.end());
if (rev > beg) {
return head + tail.at(0) + string(head.rbegin(), head.rend());
}
else {
if (tail.at(0) != '9') {
return head + char(tail.at(0) + 1) + string(head.rbegin(), head.rend());
}
else {
auto beg = inc(rev);
return beg + "0" + string(beg.rbegin(), beg.rend());
}
}
}
return "Error!";
}
int main() {
string num;
while (true) {
cin >> num;
if (is_palindrome(num)) cout << num;
else cout << repairs(num);
puts("\n");
}
system("pause > nul");
}
#include <string>
using namespace std;
bool is_palindrome(string& num) {
return num == string(num.rbegin(), num.rend());
}
string inc(const string& num) {
string box;
int n = 1;
for (auto dig : num) {
dig += n;
if (dig == 58) {
dig -= 10;
n = 1;
} else {
n = 0;
}
box.push_back(dig);
}
return string(box.rbegin(), box.rend());
}
string repairs(string& num) {
auto mid = num.length() >> 1;
auto head = string(num.begin(), num.begin() + mid);
auto tail = string(num.begin() + mid, num.end());
auto rev = string(head.rbegin(), head.rend());
if (head.length() == tail.length()) {
if (rev > tail) return head + rev;
else {
auto beg = inc(rev);
return beg + string(beg.rbegin(), beg.rend());
}
} else {
auto beg = string(num.begin() + mid + 1, num.end());
if (rev > beg) {
return head + tail.at(0) + string(head.rbegin(), head.rend());
}
else {
if (tail.at(0) != '9') {
return head + char(tail.at(0) + 1) + string(head.rbegin(), head.rend());
}
else {
auto beg = inc(rev);
return beg + "0" + string(beg.rbegin(), beg.rend());
}
}
}
return "Error!";
}
int main() {
string num;
while (true) {
cin >> num;
if (is_palindrome(num)) cout << num;
else cout << repairs(num);
puts("\n");
}
system("pause > nul");
}
n = input()
if len(n) % 2 != 0:
print('1' + '0' * (len(n) - 1) + '1')
else:
new_n = n[0:(len(n) // 2)] + n[0:(len(n) // 2)][::-1]
if int(new_n) > int(n):
print(new_n)
else:
new_n = str(int(n[0:(len(n) // 2)]) + 1) + str(int(n[0:(len(n) // 2)]) + 1)[::-1]
print(new_n)
if len(n) % 2 != 0:
print('1' + '0' * (len(n) - 1) + '1')
else:
new_n = n[0:(len(n) // 2)] + n[0:(len(n) // 2)][::-1]
if int(new_n) > int(n):
print(new_n)
else:
new_n = str(int(n[0:(len(n) // 2)]) + 1) + str(int(n[0:(len(n) // 2)]) + 1)[::-1]
print(new_n)
Это ответ не правильный ответ??
Похожие вопросы
- Помогите с решением задачи на языке СИ
- Основы программирования. Решение задач. Обработка структур. Программа.
- Тренажеры по решению задач С++.
- Помогите с решением задачи С++
- Помогите с решением задачи в С++.
- Visual Studio. Решение задач
- Решение задачи на языке С++
- Помогите с решением задачи на С++
- C++ решение задач
- Решение задачи на C++.
с++
n = input()
if len(n) % 2 != 0:
print('1' + '0' * (len(n) - 1) + '1')
else:
new_n = n[0:(len(n) // 2)] + n[0:(len(n) // 2)][::-1]
if int(new_n) == int(n):
print(n)
else:
if int(new_n) > int(n):
print(new_n)
else:
new_n = str(int(n[0:(len(n) // 2)]) + 1) + str(int(n[0:(len(n) // 2)]) + 1)[::-1]
print(new_n)