如果从左到右和从右到左读取十进制系统中的表示相同,则正整数称为回文。对于给定的正整数K不超过1000000位,写入大于K的最小回文值输出。始终显示数字而不带前导零。 首先我试图保存所有的回文,然后检查打印号码。
#include<stdio.h>
int array[2000],index=0;
long long n;
void savepalindrome()
{
long long lim=1000000;
long long i=1;
for(i=1;i<lim;i++)
{
if(checkpalindrome(i)==1) {
array[index]=i; index++;
}
}
}
int checkpalindrome(long long i) {
long long reverse=0, rem,temp;
temp=i;
while(temp!=0)
{
rem=temp%10;
reverse=reverse*10+rem;
temp/=10;
}
if(reverse==i) return 1;
else return 0;
}
int main() {
int t;
scanf("%d",&t);
savepalindrome();
while(t--) {
scanf("%d",&n);
index=0;
while(array[index]<=n) {
index++;
}
if(index<=1998) printf("%d\n",array[index]);
}
}
答案 0 :(得分:0)
虽然如果long long int不能存储1000000位数,它将在long long int的范围内溢出。我认为你的索引超出数组bound.it似乎只是SIGSEGV的原因。仅当SIGSEGV访问无效的内存位置时,才会将其发送到进程。