码迷,mamicode.com
首页 > 其他好文 > 详细

二进制vs十进制

时间:2019-12-01 22:58:16      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:tle   clipboard   subject   include   产生   ret   str   -o   title   

题目描述

    对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们乘B为A的二进制逆序数。     例如对于十进制数173,它的二进制形式为10101101,逆序排列得到10110101,其十进制数为181,181即为173的二进制逆序数。

输入描述:

    一个1000位(即10^999)以内的十进制数。

输出描述:

    输入的十进制数的二进制逆序数。
示例1

输入

复制
173

输出

复制
181

代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
string f(int m,int n,string a)///将m进制转化为n进制
{
string b;
int l=a.size();
for(int i=0;i<l;)
{
int k=0;
for(int j=i;j<l;j++)
{
int t=(k*m+a[j]-‘0‘)%n;
a[j]=(k*m+a[j]-‘0‘)/n+‘0‘;
k=t;
}
b+=char(k+‘0‘);
while(a[i]==‘0‘)i++;///跳过高位产生的0
}
return b;
}
int main()
{
string a,b,c;
while(cin>>a)
{
b=f(10,2,a);
c=f(2,10,b);
reverse(c.begin(),c.end());
cout<<c<<endl;
}
return 0;
}

技术图片

二进制vs十进制

标签:tle   clipboard   subject   include   产生   ret   str   -o   title   

原文地址:https://www.cnblogs.com/zhanghuawei/p/11967990.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!