本文已参与「新人创作礼」活动,一起开启掘金创作之路。
题目来自牛客网的华为机试题库,本题目为简单题
HJ5 进制转换
描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
示例1
输入:0xAA
输出:170
number = input()[2:]
dic = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'A':10,'B':11,'C':12,'D':13,'E':14,'F':15}
n = len(number)-1
res = 0
for i in number:
res += (16**n)*dic[i]
n -= 1
print(res)
解析
最开始没有想到用字典,写了一个巨复杂的方法,看到题解里有人用字典写,就把我的写法也改成用字典来转换了
HJ6 质数因子
描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
输入描述:
输入一个整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。
示例1
输入:180
输出:2 2 3 3 5
我写的超时了,
忘记除到平方根就可以
n = int(input())
i = 2
while n >= i*i:
while n % i == 0:
print(i,end=" ")
n = n//i
i += 1
if n - 1:
print(n)
。看来还是多练习,多看别人怎么解决问题的,总能学到新东西。
HJ6 质数因子
描述 功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
输入描述: 输入一个整数
输出描述: 按照从小到大的顺序输出它的所有质数的因子,以空格隔开。
示例1 输入:180 输出:2 2 3 3 5
我写的时候,忘记除到平方根就可以
n = int(input())
i = 2
while n >= i*i:
while n % i == 0:
print(i,end=" ")
n = n//i
i += 1
if n - 1:
print(n)