【蓝桥杯训练】第二天1255、1258

1255

[蓝桥杯2015初赛]饮料换购

乐羊羊饮料厂正在举办一次促销优惠活动。
乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去(但不允许暂借或赊账)。
请你计算一下,如果小明不浪费瓶盖,尽量地参加活动。
那么,对于他初始买入的n瓶饮料,最后他一共能喝到多少瓶饮料。
输入
输入存在多组测试数据
每组测试数据输入一行包含一个正整数n(1<=n<=10000)
输出
对于每组数据输出一行,包含一个整数,表示实际得到的饮料数
样例输入 Copy
100
101
样例输出 Copy
149
151

注意

不允许暂借或赊账,及先要能-3,才能+1

算法

  1. 直接按照题目的逻辑出发,-3后判断n的正负
  2. n 为正,瓶盖数++,当前未使用瓶盖数++;
  3. n 为负,即退出

题解

def f(n):
    res = n
    while True:
        n = n - 3
        if n >= 0:
            res = res + 1
            n = n + 1
        else:
            break
    print(res)
 
while True:
    f(int(input())) 



1258

[蓝桥杯2015初赛]奖券数目

有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。
虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。
某抽奖活动奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码。
主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。
输出
请提交该数字(一个整数),不要写任何多余的内容或说明性文字。

注意

此处利用了python扫描字符串,以及in关键字

算法

直接枚举,利用函数筛选

题解

结果:print('52488')

def f(data):
    array = [i for i in str(data)]
    if '4' in array:
        return False
    else:
        return True
res = 0
for i in range(10**4,10**5):
    if f(i):
        res = res + 1
print(res)
posted @ 2020-01-18 23:36  燕山北  阅读(273)  评论(0编辑  收藏  举报