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,看题失误!
1 #include <stdio.h> 2 #include <string.h> 3 4 char A[200]; 5 int main() 6 { 7 int num,r,i,n,j,t,k,ke,mark,len,last,flag; 8 scanf("%d",&n); 9 while(n--){ 10 scanf("%d %d",&last, &k); 11 while(last--){ 12 ++k; 13 14 flag=0; 15 for(r=2;r<=10;r++){ 16 i=0; 17 num=k; 18 mark=1; 19 20 while(num>0){ 21 t=num%r; 22 A[i]= t+'0'; 23 ++i; 24 num/=r; 25 } 26 len = i-1; 27 28 for(i=0,j=len;i<=j;i++,j--){ 29 if(A[i]!=A[j]) 30 mark=0; 31 } 32 33 if(mark==1){ 34 flag++; 35 } 36 if(flag==2){ 37 printf("%d ", k); 38 break; 39 } 40 } 41 if(flag!=2) 42 ++last; 43 } 44 } 45 return 0; 46 }