鱼C论坛

 找回密码
 立即注册
查看: 4520|回复: 10

[已解决]一道很有意思的题

[复制链接]
发表于 2016-3-19 09:57:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
遇到难题了。。。求帮忙

这个的要求就是先把输入的十进制数变为二进制, 然后根据规则将其转换,起规则是:二进制数中遇到两个1或0 ,则取1个(即1100就变为10)
遇到单独的0则分开(即11011变为[1 , 1]), 最后再将计算后的二进制数变为十进制。



import sys


def encode(*integers):
    return int('0'.join(''.join(c + c for c in bin(i)[2: ]) for i in integers), 2)
   

def decode(integer):
    #代码


integer = input('Input a strictly positive integer: ')
if integer[0] == '0' or not integer.isdigit():
    print('Incorrect input, giving up!')
    sys.exit()
integer = int(integer)
decoding = decode(integer)
if decoding is None:
    print('Incorrect encoding!')
else:
    print('This encodes: ', decoding)
    print('Checking: ')
    print('  In base 2, {} is {}'.format(integer, bin(integer)[2: ]))
    print('  In base 2, {} is: [{}]'.format(decoding, ', '.join(bin(i)[2: ] for i in decoding)))
         

QQ截图20160318175325.png
最佳答案
2016-3-20 23:01:22
新手来一个
  1. bi=bin(int(input('')))
  2. copy_bi=bi[2:]
  3. bi=bi[2:]
  4. last=None
  5. for i in range(len(bi)):
  6.     if last==None:
  7.         last=bi[i]
  8.     else:
  9.         if last==bi[i]:
  10.             last=None
  11.             copy_bi=copy_bi[:i]+' '+copy_bi[i+1:]
  12.         else:
  13.             if bi[i]=='0':
  14.                 last=None
  15.                 copy_bi=copy_bi[:i]+'/'+copy_bi[i+1:]
  16.             else:
  17.                 last=None
  18.                 copy_bi=copy_bi[:i-1]+'/'+copy_bi[i:]
  19. copy_bi=copy_bi.split('/')
  20. for i in copy_bi:
  21.     iii=(i.strip()).split()
  22.     a=''
  23.     for ii in iii:
  24.         a=a+i
  25.     print (a)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-3-19 19:25:59 | 显示全部楼层
有木有人啊。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-19 19:27:38 | 显示全部楼层
顶一个。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-19 19:28:09 | 显示全部楼层
新人发帖没人理啊。。。。来个人说个话也行啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-19 23:49:03 | 显示全部楼层
新人表示看不懂,水贴,板顶
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-20 10:04:05 | 显示全部楼层
就会二进制转十进制的,相互学习一下,
s = '1101'
i = 0
while s != ' ':
    i = i*2 +(ord(s[1]) - ord('0'))
    s = s[1:]
print(i)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-20 19:09:52 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-20 21:42:28 | 显示全部楼层
看了半天猜搞清题意。
这样做行不行:
  1. bin1 =bin(int( input('Input a strictly positive integer: ')))#将输入的数转为二进制
  2. bin1 = bin1[2:]#去掉开头的0b
  3. print(bin1)
  4. zero = 0
  5. j = 0
  6. for i in bin1:
  7.     if i == '0':
  8.         zero += 1#统计连续0的数量
  9.     if i == '1' and zero % 2 == 1:#如果遇到1看看前面的0是否奇数
  10.         zero = 0
  11.         bin1 = bin1[:j - 1] + '2' + bin1[j:]#将奇数的最后一个0 暂用2代替
  12.     j += 1
  13. bin1 = bin1.replace('00', '0')#两个0变1个0
  14. bin1 = bin1.replace('11', '1')
  15. b_list = bin1.split('2')#以2为标志分成多个字符串列表
  16. print(b_list)
  17. for i in b_list:
  18.     print(int(i, 2), end = ' ')#打印成10进制
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-20 23:01:22 | 显示全部楼层    本楼为最佳答案   
新手来一个
  1. bi=bin(int(input('')))
  2. copy_bi=bi[2:]
  3. bi=bi[2:]
  4. last=None
  5. for i in range(len(bi)):
  6.     if last==None:
  7.         last=bi[i]
  8.     else:
  9.         if last==bi[i]:
  10.             last=None
  11.             copy_bi=copy_bi[:i]+' '+copy_bi[i+1:]
  12.         else:
  13.             if bi[i]=='0':
  14.                 last=None
  15.                 copy_bi=copy_bi[:i]+'/'+copy_bi[i+1:]
  16.             else:
  17.                 last=None
  18.                 copy_bi=copy_bi[:i-1]+'/'+copy_bi[i:]
  19. copy_bi=copy_bi.split('/')
  20. for i in copy_bi:
  21.     iii=(i.strip()).split()
  22.     a=''
  23.     for ii in iii:
  24.         a=a+i
  25.     print (a)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-22 09:52:07 | 显示全部楼层
看不懂啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-22 21:27:17 | 显示全部楼层
有意思。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-20 05:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表