SPOJ PALIN程序在ideone上成功运行,但是当我在SPOJ上发布时显示错误的答案

时间:2014-07-12 16:25:07

标签: algorithm palindrome

如果从左到右和从右到左读取十进制系统中的表示相同,则正整数称为回文。对于给定的正整数K不超过1000000位,写入大于K的最小回文值输出。始终显示数字而不带前导零。

输入

第一行包含整数t,即测试用例的数量。整数K在下一行中给出。

输出

对于每个K,输出大于K的最小回文。

实施例

输入: 2 808 2133

输出: 818 2222

我的代码在ideone上成功运行但是spoj显示“错误的ans”,任何人都可以建议我或纠正我错在哪里,这是我的代码;

#include<stdio.h>
int ifPalindrome(int n){
     int r=0,k=0,a=n;
     while((a%10)!=0){
     r=a%10;
     k=10*k+r;
     a=a/10;
     }
  if(k==n)return 1;
return 0;   
}
int main(){
    int t,n;
    scanf("%d",&t);

    for(;t>0;t--){
       scanf("%d",&n);
       while(ifPalindrome(n)!=1){
        n++;
       }    
      if(ifPalindrome(n)==1)printf("%d\n",n);   
      }
      return 0;
  }

1 个答案:

答案 0 :(得分:1)

您所犯的错误是您将n存储在integer datatype中......约束表示

  

K不超过1000000 位数digits而不是number

integer无法存储此类huge number ..因此您必须使用stringcharacter arrayinteger array来解决此问题问题...试试这个输入:

  

454646546546546546546546464646464646

你会意识到你错了