您当前的位置: 首页 >  Python

孑渡

暂无认证

  • 1浏览

    0关注

    178博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

算法刷题系列(三)蓝桥杯python基础练习3

孑渡 发布时间:2021-02-02 11:05:20 ,浏览量:1

- 特殊的数字

资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333。编程求所有满足这种条件的三位十进制数。 输出格式 按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。

  • 解答程序
import math
for i in range(100, 1000):
    single = i % 10
    ten = (i % 100) // 10
    hundred = i // 100
    if i == math.pow(single, 3) + math.pow(ten, 3) + math.pow(hundred, 3):
        print(i)
  • 经验教训 1、math提供pow可以快捷计算幂次。 2、//为整数除法,可以抹去小数点。

- 回文数

资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。 输出格式 按从小到大的顺序输出满足条件的四位十进制数。

  • 解答程序
for i in range(1000, 10000):
    sin = i % 10
    ten = (i % 100) // 10
    hun = (i % 1000) // 100
    tho = i // 1000
    if tho == sin and ten == hun:
        print(i)
  • 经验教训 无。

- 特殊回文数

资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的。 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。 输入格式 输入一行,包含一个正整数n。 输出格式 按从小到大的顺序输出满足条件的整数,每个整数占一行。 样例输入 52 样例输出 899998 989989 998899

  • 解答程序
# 特殊回文数
n = int(input())
for i in range(10000, 1000000):
    sin = i % 10
    ten = (i % 100) // 10
    hun = (i % 1000) // 100
    tho = (i % 10000) // 1000
    wan = (i % 100000) // 10000
    bil = i // 100000
    number_sum = sin + ten + hun + tho + wan + bil
    if bil == 0:
        if n == number_sum:
            if sin == wan and ten == tho:
                print(i)
    else:
        if n == number_sum:
            if sin == bil and ten == wan and hun == tho:
                print(i)
  • 经验教训 1、在已经做了一部分剪枝的情况下,CPU使用时间依然达到了671ms,比较危险。 2、可以考虑拆分for循环,先找出等于n的值,再考虑回文,不知道会不会有速度上的改进。

- 十进制转十六进制

资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。 给出一个非负整数,将它表示成十六进制的形式。 输入格式 输入包含一个非负整数a,表示要转换的数。0

关注
打赏
1663211900
查看更多评论
立即登录/注册

微信扫码登录

0.0352s