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\n
"
, k);
38
break
;
39
}
40
}
41
if
(flag!=
2
)
42
++
last;
43
}
44
}
45
return
0
;
46
}

