Judge Info
- Memory Limit: 32768KB
- Case Time Limit: 10000MS
- Time Limit: 10000MS
- Judger: Number Only Judger
Description
A number that reads the same from right to left as when read from left to right is called a palindrome. The number 12321 is a palindrome; the number 77778 is not. Of course, palindromes have neither leading nor trailing zeroes, so 0220 is not a palindrome.
The number 21 (base 10) is not palindrome in base 10, but the number 21 (base 10) is, in fact, a palindrome in base 2 (10101).
Write a program that reads two numbers (expressed in base 10):
- N (1 <= N <= 15)
- S (0 < S < 10000)
and then finds and prints (in base 10) the first N numbers strictly greater than S that are palindromic when written in two or more number bases (2 <= base <= 10). Solutions to this problem do not require manipulating integers larger than the standard 32 bits.
Input
The first line of input contains , the number of test cases.
For each test case, there is a single line with space separated integers N and S.
Output
For each test case output N lines, each with a base 10 number that is palindromic when expressed in at least two of the bases 2..10. The numbers should be listed in order from smallest to largest.
Sample Input
2
3 25
1 25
Sample Output
26
27
28
26
解题思路:找两个1~10进制之间的回文数字,当时看成找1个回文数字就可以通过,所以导致好久才AC,看题失误!
#include <stdio.h>
#include <string.h> char A[];
int main()
{
int num,r,i,n,j,t,k,ke,mark,len,last,flag;
scanf("%d",&n);
while(n--){
scanf("%d %d",&last, &k);
while(last--){
++k; flag=;
for(r=;r<=;r++){
i=;
num=k;
mark=; while(num>){
t=num%r;
A[i]= t+'';
++i;
num/=r;
}
len = i-; for(i=,j=len;i<=j;i++,j--){
if(A[i]!=A[j])
mark=;
} if(mark==){
flag++;
}
if(flag==){
printf("%d\n", k);
break;
}
}
if(flag!=)
++last;
}
}
return ;
}