Я всегда получаю неправильное ответное сообщение при каждой отправке. Пожалуйста, помогите мне с кодом.
Сообщение при каждой отправке только wrong answer
Я пробовал все угловые случаи и исключительные входные данные, и код, кажется, работает правильно, но представление не принимается.
#include <stdio.h>
#include <stdbool.h>
int getLength(long long x) {
int length = 0;
while (x != 0) {
x = x / 10;
length++;
}
return length;
}
bool even(long long x) {
int checkv = 0;
int pal = x;
int con = 0;
int length = getLength(pal);
length = length / 2;
while (length--) {
con = pal % 10;
checkv = checkv * 10 + con;
pal = pal / 10;
}
if (pal == checkv)
return true;
else
return false;
}
bool odd(long long x) {
int checkv = 0;
int pal = x;
int con = 0;
int length = getLength(pal);
length = length / 2;
while (length--) {
con = pal % 10;
checkv = checkv * 10 + con;
pal = pal / 10;
}
pal = pal / 10;
if (pal == checkv)
return true;
else
return false;
}
bool checkPal(long long x) {
int length = getLength(x);
if (length % 2 == 0)
return even(x);
else
return odd(x);
}
void getPal(long long x) {
long long pal = x + 1;
bool again = true;
while (again) {
if (checkPal(pal))
again = false;
else
pal++;
}
printf("%lli\n", pal);
}
void main() {
int n;
scanf("%d", &n);
long long a[n];
int i = 0;
while (n--) {
scanf("%lli", &a[i]);
getPal(a[i]);
i++;
}
}
Я думаю, что проблема заключается во вводе, то есть я читаю ввод как long long
, но фактический ввод, возможно, превысил предел этого.