2015-07-12 1 views
-2

The Next palindromeLa prochaine palindrome plus petit que k en utilisant c

Un nombre entier positif est appelé un palindrome si sa représentation dans le système décimal est identique lorsqu'elle est lue de gauche à droite et de droite à gauche. Pour un entier positif donné K, écrire la valeur du plus petit palindrome plus grand que K à sortir.

entrée

La première ligne contient un nombre entier, qui correspond à K. On suppose que K est inférieur à 200000

sortie

sortie consiste en un seul nombre entier, qui correspond à la plus petite palindrome supérieur à K.

Exemple d'entrée 1:

Exemple de sortie 1:

Exemple d'entrée 2:

Exemple de sortie 2:

2222. ci-dessous est mon programme, mais je ne suis pas en mesure pour obtenir la sortie. S'il vous plaît dites-moi où je vais mal.

#include<stdio.h> 
int palindrome(int n) 
{ 
int t,r; 
    t=n; 
    while(t!=0) 
    { 
    r=r*10; 
    r=r+(t%10); 
    t=t/10; 
    } 
    if(r==n) 
    return 1; 
    else 
    return 0; 
} 

int main() 
{ 
int k,d=0,i; 
    scanf("%d",&k); 
    for(i=k+1;i<=200;i++){ 
    d=palindrome(i); 
    if(d==1) 
     break; 
    } 
    printf("%d",i); 
     return 0; 
} 
+0

essayez 898 .. Il existe un cas de test encore plus sévère. Mais je ne donnerai pas l'indice (Trouvez les cas de test vous-même). – Raman

+1

Question de devoir commun avec beaucoup de solutions sur ce site juste convertir en s chaîne –

+3

vous utilisez 'r' non initialisé. – mch

Répondre

2

Je fixe l'indentation, init r avec 0 Func palindrome, et fixé la boucle qui vérifie palindromes, maintenant la boucle pour toujours (while (1)) jusqu'à ce qu'il existe (pause) lors de la recherche d'un palindrome.

#include<stdio.h> 
int palindrome(int n) 
{ 
    int t,r = 0; 
    t=n; 
    while(t!=0) 
    { 
    r=r*10; 
    r=r+(t%10); 
    t=t/10; 
    } 
    if(r==n) 
    return 1; 
    else 
    return 0; 
} 

int main() 
{ 
    int k,d=0,i; 
    scanf("%d",&k); 
    i = k + 1; 
    while(1) 
    { 
    d=palindrome(i); 
    //printf("%d ", i); 
    if(d==1) 
     break; 
    i++; 
    } 
    printf("%d",i); 
    return 0; 
} 
+0

Donnez la sortie 808 dans votre programme et vérifiez la sortie. Quand les palindromes sont donnés dans ce programme, il retourne le nombre lui-même. – ameyCU

+0

Vous avez raison, changez simplement l'init de i en i = k + 1; –

+0

Veuillez apporter des modifications à votre code. – ameyCU