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

- 闰年判断

资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
给定一个年份,判断这一年是不是闰年。
当以下情况之一满足时,这一年是闰年:
1. 年份是4的倍数而不是100的倍数;
2. 年份是400的倍数。
其他的年份都不是闰年。
输入格式
输入包含一个整数y,表示当前的年份。
输出格式
输出一行,如果给定的年份是闰年,则输出yes,否则输出no。

  • 解答程序
y = int(input())
if y % 4 == 0:
    if y % 100 == 0:
        if y % 400 == 0:
            print('yes')
        else:
            print('no')
    else:
        print('yes')
else:
    print('no')
  • 经验教训
    无。

- 闰年判断

资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
给定一个年份,判断这一年是不是闰年。
当以下情况之一满足时,这一年是闰年:
1. 年份是4的倍数而不是100的倍数;
2. 年份是400的倍数。
其他的年份都不是闰年。
输入格式
输入包含一个整数y,表示当前的年份。
输出格式
输出一行,如果给定的年份是闰年,则输出yes,否则输出no。

  • 解答程序
y = int(input())
if y % 4 == 0:
    if y % 100 == 0:
        if y % 400 == 0:
            print('yes')
        else:
            print('no')
    else:
        print('yes')
else:
    print('no')
  • 经验教训
    无。

- 闰年判断

资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
给定一个年份,判断这一年是不是闰年。
当以下情况之一满足时,这一年是闰年:
1. 年份是4的倍数而不是100的倍数;
2. 年份是400的倍数。
其他的年份都不是闰年。
输入格式
输入包含一个整数y,表示当前的年份。
输出格式
输出一行,如果给定的年份是闰年,则输出yes,否则输出no。

  • 解答程序
y = int(input())
if y % 4 == 0:
    if y % 100 == 0:
        if y % 400 == 0:
            print('yes')
        else:
            print('no')
    else:
        print('yes')
else:
    print('no')
  • 经验教训
    无。

- 01字串

资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
输入格式
本试题没有输入。
输出格式
输出32行,按从小到大的顺序每行一个长度为5的01串。
样例输出
00000
00001
00010
00011
<以下部分省略>

  • 解答程序
for i in range(32):
    count = i
    temp = ""
    flag = [0, 0, 0, 0, 0]
    if count >= 16:
        flag[4] = 1
        count = count - 16
        if count >= 8:
            flag[3] = 1
            count = count - 8
            if count >= 4:
                flag[2] = 1
                count = count - 4
                if count == 3:
                    flag[1] = 1
                    flag[0] = 1
                elif count == 2:
                    flag[1] = 1
                    flag[0] = 0
                elif count == 1:
                    flag[1] = 0
                    flag[0] = 1
                elif count == 0:
                    flag[1] = 0
                    flag[0] = 0
            else:
                flag[2] = 0
                if count == 3:
                    flag[1] = 1
                    flag[0] = 1
                elif count == 2:
                    flag[1] = 1
                    flag[0] = 0
                elif count == 1:
                    flag[1] = 0
                    flag[0] = 1
                elif count == 0:
                    flag[1] = 0
                    flag[0] = 0
        else:
            flag[3] = 0
            if count >= 4:
                flag[2] = 1
                count = count - 4
                if count == 3:
                    flag[1] = 1
                    flag[0] = 1
                elif count == 2:
                    flag[1] = 1
                    flag[0] = 0
                elif count == 1:
                    flag[1] = 0
                    flag[0] = 1
                elif count == 0:
                    flag[1] = 0
                    flag[0] = 0
            else:
                flag[2] = 0
                if count == 3:
                    flag[1] = 1
                    flag[0] = 1
                elif count == 2:
                    flag[1] = 1
                    flag[0] = 0
                elif count == 1:
                    flag[1] = 0
                    flag[0] = 1
                elif count == 0:
                    flag[1] = 0
                    flag[0] = 0
    else:
        flag[4] = 0
        if count >= 8:
            flag[3] = 1
            count = count - 8
            if count >= 4:
                flag[2] = 1
                count = count - 4
                if count == 3:
                    flag[1] = 1
                    flag[0] = 1
                elif count == 2:
                    flag[1] = 1
                    flag[0] = 0
                elif count == 1:
                    flag[1] = 0
                    flag[0] = 1
                elif count == 0:
                    flag[1] = 0
                    flag[0] = 0
            else:
                flag[2] = 0
                if count == 3:
                    flag[1] = 1
                    flag[0] = 1
                elif count == 2:
                    flag[1] = 1
                    flag[0] = 0
                elif count == 1:
                    flag[1] = 0
                    flag[0] = 1
                elif count == 0:
                    flag[1] = 0
                    flag[0] = 0
        else:
            flag[3] = 0
            if count >= 4:
                flag[2] = 1
                count = count - 4
                if count == 3:
                    flag[1] = 1
                    flag[0] = 1
                elif count == 2:
                    flag[1] = 1
                    flag[0] = 0
                elif count == 1:
                    flag[1] = 0
                    flag[0] = 1
                elif count == 0:
                    flag[1] = 0
                    flag[0] = 0
            else:
                flag[2] = 0
                if count == 3:
                    flag[1] = 1
                    flag[0] = 1
                elif count == 2:
                    flag[1] = 1
                    flag[0] = 0
                elif count == 1:
                    flag[1] = 0
                    flag[0] = 1
                elif count == 0:
                    flag[1] = 0
                    flag[0] = 0
    flag = [flag[4 - i] for i in range(5)]
    print("".join(map(str, flag))) 
  • 经验教训
    1、加权输出的逻辑顺序弄反了,因此最后flag数组又做了一次翻转。
    2、最初第一遍测试时没有发现count等于幂次的情况,后加上了等于号。
    3、函数意识不够,事实上在上方取了count - 2^k之后才发现可以将判断统一为函数的,最初并没有发现。
    4、整数列表输出为字符串的方法: “”.join(map(str, flag))
    5、python提供bin函数,利用这个可以快速将整数变为二进制,因此本题也可以这样写
for i in range(32):
    print("0" * (5-len(bin(i)[2:])) + bin(i)[2:])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值