65,208
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <string>
using namespace std;
#define BIT 6//二进制整数的位数,根据所求整数二进制位数大小设置位数
int t=-1;
int Bit_merge(int a[],int p,int r)
{
static ans=0;
p=(p>t)?p:(t+1);
for (int i=p;i<=r;i++)
{
t++;
ans+=a[i]<<i;
}
return ans;
}
int bit_Multiplication(int a[],int p,int r,int flag)//x为二进制数
{
int q;
if (p<r)
{
q=(p+r)/2;
bit_Multiplication(a,p,q,0);
bit_Multiplication(a,q+1,r,1);
}
if (p<=r&&t!=BIT)
{
if (flag==0)
{
return Bit_merge(a,p,q);
}
else
{
return Bit_merge(a,q+1,r);
}
}
}
void main()
{
int a[BIT]={0};
string x;
cin>>x;
int j=0;
while (j!=BIT)
{
a[j]=x[BIT-1-j]-'0';
cout<<a[j]<<" ";
j++;
}
cout<<endl;
cout<<bit_Multiplication(a,0,BIT-1,0)<<endl;
}