双进制回文数
十进制数585 = 10010010012(二进制表示),因此它在这两种进制下都是回文数。
找出所有小于一百万,且在十进制和二进制下均回文的数,并求它们的和。
(请注意,无论在哪种进制下,回文数均不考虑前导零。)
#include<iostream>
using namespace std;
int func (int a, int x) {
int rawa = a, t = 0;
while (a) {
t = t * x + a % x;
a /= x;
}
return t == rawa;
}
int main() {
int ans = 0;
for (int i = 1; i < 1000000; i++) {
if (func(i , 10) && func(i, 2)) {
cout << i <<endl;
ans += i;
}
}
cout << ans << endl;
return 0;
}