【发布时间】: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