zoukankan      html  css  js  c++  java
  • 网易互娱人工智能工程师笔试题

    考试的时候第二题调了好久一直是30%,时间复杂度太高,现在想想还是题目分析的不够透彻!

    题目大意:有一个大整数,每三位分成一组;把每一组三位数转成二进制数,再连接所有二进制数;二进制数每五位分成一组,每五位二进制数的数值范围为0-31,用0-9-A-V表示。高位到低位连接起来为最后结果。

    分析:每个三位数有唯一的编码,每个三位数转成二进制,不会超过2个5位二进制数aaaaa,bbbbb(因为2的10次方=1024),aaaaa其实就是该数对32整除的结果,bbbbb是该数对32取余的结果。这样就不需要二进制数转换再进行分组转换了,直接对原十进制大整数进行除法与取余的操作。

    n = int(sys.stdin.readline().strip())
    for i in range(n):
        line = sys.stdin.readline().strip()
        three_num = list()
        final = ''
        while len(line)>0:
            three_num.append(int(line[-3:]))
            line = line[:-3]
        three_num.reverse()
        for num in three_num:
            a = num//32
            if a<10:
                final += str(a)
            else:
                final += chr(a-10+ord('A'))
            b = num%32
            if b<10:
                final += str(b)
            else:
                final += chr(b-10+ord('A'))
        if final[0] == "0":
            final = final[1:]
        print(final)
  • 相关阅读:
    python入学代码
    python安装和pycharm安装与笔记
    python预习day1
    python-tyoira基本
    Typora基础
    学习一下saltstack 服务器批量管理
    消息队列与kafka
    消息队列rabbitmq
    redis数据库在linux上的学习
    蓝绿部署、滚动发布、灰度发布的介绍以及最佳实践
  • 原文地址:https://www.cnblogs.com/a-little-v/p/10665580.html
Copyright © 2011-2022 走看看