题目描述
对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们称B为A的二进制逆序数。
例如对于十进制数173,它的二进制形式为10101101,逆序排列得到10110101,其十进制数为181,181即为173的二进制逆序数。
输入
一个1000位(即10^999)以内的十进制数。
输出
输入的十进制数的二进制逆序数。
样例输入
985
样例输出
623
注:处理好的字符串后面记得加'\0',以免后续发生不必要的出错。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct bign{
int d[1005];
int len;
bign()
{
fill(d,d+1005,0);
len=0;
}
};
bign change(char s[])
{
int len=strlen(s);
int i;
bign a;
a.len=len;
for(i=0;i<len;i++)
{
a.d[i]=s[len-1-i]-'0';
}
return a;
}
bign divide(bign a,int m,int b,int &r){
bign c;
c.len=a.len;
r=0;
for(int i=a.len-1;i>=0;i--)
{
r=r*m+a.d[i];
if(r>=b){
c.d[i]=r/b;
r=r%b;
}else