双进制回文数,一道C++程序题,求解!!!?

题目描述
一个正整数如果正读与反读都一样则称为回文数。比如十进制232是回文,二进制11011也是回文。有些数十进制和二进制均为回文,称为双进制回文数。

例如:33,十进制下是回文数,转换成二进制为100001,也是回文。我们则称33为双进制回文数。

给定n,输出1-n之间所有的双进制回文数。

输入格式
一个正整数n

输出格式
输出1-n之间所有双进制回文数,每行一个,格式:十进制数:二进制数.

如:

5:101

717:1011001101

所有数按从小到大排列。

合成回文数去生成二进制判断是否回文。100内的例子,仅供参考思路:
图片说明
图片说明