华为机试(python):排序

HJ6 质数因子

题目:功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )

输入描述:

输入一个整数

输出描述:

按照从小到大的顺序输出它的所有质数的因子,以空格隔开。

##质因子只有1和它本身
import math
n = int(input())
for i in range(2, int(math.sqrt(n))+1):
    while n % i == 0:
        print(i, end=' ')
        n = n // i
#如果n没有变化,还是大于2的数,则输出其本身
if n > 2:
    print(n)

HJ34 图片整理

题目:Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过代码解决。

输入描述:

Lily使用的图片包括"A"到"Z"、"a"到"z"、"0"到"9"。输入字母或数字个数不超过1024。

输出描述:

Lily的所有图片按照从小到大的顺序输出

while True:
    try:
        a =input()
        #print(a[0])
        b = []
        c = []
        for i in range(len(a)):
            b.append(ord(a[i]))
        b.sort()
        for j in b:
            c.append(chr(j))
        print(''.join(c))
        
        
    except:
        break
while True:
    try:
        #将字母和数字直接排序,也是按ASCII码从小到大排序的
        print(''.join(sorted(input())))
    except EOFError: break        

HJ37 统计每个月兔子的总数

题目:有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问第n个月的兔子总数为多少?

输入描述:

输入一个int型整数表示第n个月

输出描述:

输出对应的兔子总数

#斐波那契数列:1 1 2 3 5 8 13 21 34 f(n)=f(n-1)+f(n-2) n>2,n从0开始
while True:
    try:
        month=int(input())
        n=month-1
        def func(n):
            if n<2:#基线条件
                return 1
            else:#递归条件
                return func(n-1)+func(n-2)
        print(func(n))
    except:
        break

HJ101 输入整型数组和排序标识,对其元素按照升序或降序进行排序

题目:输入整型数组和排序标识,对其元素按照升序或降序进行排序

输入描述:

第一行输入数组元素个数
第二行输入待排序的数组,每个数用空格隔开
第三行输入一个整数0或1。0代表升序排序,1代表降序排序

输出描述:

输出排好序的数字

while True:
    try:
        num = input()
        ##map(类型,输入)
        array = list(map(int,input().split()))
        n = int(input())
        if n==0:
            array.sort()
        else:
            array.sort(reverse = True)
        #只有转换为字符类型才可以拼接
        print(' '.join(map(str,array)))
        #print(' '.join(array))
        
        
        
    except:
        break

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值