J'ai écrit une solution de force brute pour ce problème de palindrome suivant et je voulais que la limite de temps soit dépassée. Mais quand j'ai testé quelques cas de test cela fonctionne correctement mais quand je soumets le code dans spoj je reçois la mauvaise réponse. Voici mon code. S'il vous plaît quelqu'un peut m'aider à comprendre ce qui ne va pas dans ce code de programme.Le Next Palindrome SPOJ
int main()
{
int t,k,cmp,tmp;
scanf("%d",&t); //No of test cases
while(t--)
{
scanf("%d",&k); //Enter the input
while(1)
{
++k; //Increment Every no if there is no palindrome
tmp=k;
cmp=0;
while(tmp%10 != 0) // Reverse a number
{
cmp=(cmp*10)+(tmp%10);
tmp=tmp/10;
}
if(k == cmp) // If Reverse and K are same its a palindrome .
{
printf("%d\n",k);
break;
}
}
}
return 0;
}
Voici le lien vers le problème: http://www.spoj.com/problems/PALIN/ Vous pouvez soumettre ma solution à: http://www.spoj.com/submit/PALIN/
Le problème est dans l'entrée. Il prend l'entrée comme un «int» qui ne peut pas contenir plus de 10 chiffres, alors que l'entrée pourrait être aussi long que 1000000 chiffres. –
La façon dont il prend l'entrée est un autre problème mais le programme devrait fonctionner pour les petits nombres comme l'entrée est s'il corrige l'erorr que j'ai pointé. Et oui, s'il stockait les entrées en tableau, il aurait besoin d'une autre méthode pour vérifier les palindromes et le programme fonctionnerait pour un plus grand nombre. –
Oui, vous avez raison. J'ai changé un peu le code pour travailler dans votre cas de test. Il montre encore une mauvaise réponse. while (tmp! = 0) { cmp = (cmp * 10) + (tmp% 10); tmp = tmp/10; } – user3045438