2015-07-12 23 views
-2

从左至右和从右到左阅读时,接着回文下一个回文小于k用c

一个正整数被称为回文如果其在十进制系统中的表示是相同的。对于给定的正整数K,写入大于K的最小回文的值以输出。

输入

第一行包含一个整数,其对应于K.假设K小于200000

输出

输出由一个单一的整数,其对应于最小的回文大于K.

样品输入1:

样本输出1:

样品输入2:

样本输出2:

2222下方 是我的计划,但我不能够得到输出。请告诉我我哪里错了。

#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

尝试898 ..还有一个更严重的测试用例。但我不会提示(自己查找测试用例)。 – Raman

+1

在本网站上有大量解决方案的常见作业问题只是转换为s字符串 –

+3

您正在使用'r'未初始化。 – mch

回答

2

我固定压痕,初始化在FUNC回文与0 R,并固定用于检查回文,现在循环永远(而(1)),直到它存在(中断)找到一个回文当环路。

#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

在程序中输出808并检查输出。当在这个程序中给回文输入时,它返回数字本身。 – ameyCU

+0

你说得对,只是把我的init改成i = k + 1; –

+0

请在您的代码中进行更改。 – ameyCU

相关问题