-
Notifications
You must be signed in to change notification settings - Fork 3
/
906.cpp
37 lines (36 loc) · 1.07 KB
/
906.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Solution {
public:
long long createPalindrome(long long prefix, long long suffix) {
while (suffix) {
prefix = prefix * 10 + suffix % 10;
suffix /= 10;
}
return prefix;
}
bool isParlindrome(long long num) {
long long temp = num;
long long rev = 0;
while (num) {
rev = rev * 10 + num % 10;
num /= 10;
}
return rev == temp;
}
int superpalindromesInRange(string left, string right) {
long long l = stoll(left);
long long r = stoll(right);
long long lSqrt = sqrt(l);
long long rSqrt = sqrt(r);
long long base = 1;
long long num = 0;
int res = 0;
while (num < rSqrt) {
num = createPalindrome(base, base);
if (num >= lSqrt && num <= rSqrt && isParlindrome(num * num)) res++;
num = createPalindrome(base, base / 10);
if (num >= lSqrt && num <= rSqrt && isParlindrome(num * num)) res++;
base++;
}
return res;
}
};