38. 二进制倒置

单点时限: 1.0 sec

内存限制: 256 MB

给定一个整数 n,将 n 的二进制表示(不包括开头可能的值为 0 的位,n=0 表示为 1 位 0)前后倒置,输出倒置后的二进制数对应的整数。

输入格式
输入一个数,表示 n。

对于 30% 的数据,n≤1018。

对于 90% 的数据,n≤10100。

对于 100% 的数据,0≤n≤101000。

输出格式
输出结果。

样例
input
10
output
5
input
0
output
0
input
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
output
7715442851596369463000695959966459436485038766875199595258933941809737
提示
10:其二进制表示为 1010,倒置后为 0101,对应输出就是 5。
10000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
0000000000000
的二进制表示为:

10010010010011010110100100101100101001100001
10111110011101011000010110010011110000100110
00100110011100000101111110011100010101100111
00100000010001110001000010001101001111100101
01010101100100100001100001000101010000010111
01000111100010000000000000000000000000000000
00000000000000000000000000000000000000000000
0000000000000000000000000
倒置后为:

00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000010001111000101110100000101010001
00001100001001001101010101010011111001011000
10000100011100010000001001110011010100011100
11111101000001110011001000110010000111100100
11010000110101110011111011000011001010011010
0100101101011001001001001
对应十进制值为:

7715442851596369463000695959966459436485038766875199595258933941809737

int(字符串,进制)转化为特定进制下的十进制数

n=int(input())
s=str(bin(n))[2:]
sum=0
for i in range(len(s)):
    if s[i]=='1':
        sum+=2**i
print(sum)
print(int(('{0:b}'.format((int)(input())))[::-1],2))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值