【问题标题】:SPOJ PALIN programe running successfully on ideone,but showing wrong answer when i am posting it on SPOJSPOJ PALIN 程序在 ideone 上成功运行,但当我在 SPOJ 上发布时显示错误答案
【发布时间】:2023-03-24 15:40:01
【问题描述】:

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

输入

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

输出

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

例子

输入: 2 808 第2133章

输出: 818 2222

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

#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;
  }

【问题讨论】:

  • 一个 int 最多只能容纳大约 20 亿(10 位)的数字,但您可能有一个 100 万位的数字。

标签: algorithm palindrome


【解决方案1】:

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

K 不超过 1000000 个数字(它是 digits 而不是 number

integer 不可能存储这样的huge number..所以你必须使用stringcharacter arrayinteger array 来解决这个特殊问题......试试这个输入:

454646546546546546546546464646464646

你会意识到你错在哪里

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多