Any idea on How solve this palindrome problem?? Is this one a dynamic programming problem??!! Light OJ 1205.
# | User | Rating |
---|---|---|
1 | tourist | 3993 |
2 | jiangly | 3743 |
3 | orzdevinwang | 3707 |
4 | Radewoosh | 3627 |
5 | jqdai0815 | 3620 |
6 | Benq | 3564 |
7 | Kevin114514 | 3443 |
8 | ksun48 | 3434 |
9 | Rewinding | 3397 |
10 | Um_nik | 3396 |
# | User | Contrib. |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 156 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
10 | nor | 152 |
Any idea on How solve this palindrome problem?? Is this one a dynamic programming problem??!! Light OJ 1205.
Name |
---|
Probably there is a better way than doing binary search (with math) but binary search works fast enough.
It is easy to see that the answer is the number of palindromes from 0 to j minus the number of palindromes from 0 to i, so let's calculate the number of palindromes from 0 to x:
We can split palindromes into the ones with an even number of digits and an odd number of digits and calculate the palindromes independently. We binary search the range we want and for the comparison we consider the palindrome generated with our number, we generate a palindrome with a number by just reversing it and adding to the final of our number, or if it is an odd number of digits palindrome, we remove one of the mid digits, that's it, for example, 127489 -> 127489984721 or 12748984721.
From here on it is trivial.