2020年蓝桥杯模拟赛python水题

文章目录

    • 第四题 数字9
    • 第五题 数位递增的数
    • 第六题 递增三元组
    • 第七题 音节判断
    • 第九题 序列计数

第四题 数字9

【问题描述】
在1至2019中,有多少个数的数位中包含数字9?
注意,有的数中的数位中包含多个9,这个数只算一次。例如,1999这个数包含数字9,在计算时只是算一个数。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

我的简陋代码:肯定不合格,勉强能用,思路是吧1-2019的数字看作字符串。

count=0
for i in range(1,2020):
    b=str(i)
    if b.rfind('9')!=-1:
        count+=1
print(count)

第五题 数位递增的数

题目
【问题描述】
一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的数,例如1135是一个数位递增的数,而1024不是一个数位递增的数。
给定正整数 n,请问在整数 1 至 n 中有多少个数位递增的数?
【输入格式】
输入的第一行包含一个整数 n。
【输出格式】
输出一行包含一个整数,表示答案。
【样例输入】
30
【样例输出】
26
【评测用例规模与约定】
对于 40% 的评测用例,1 <= n <= 1000。
对于 80% 的评测用例,1 <= n <= 100000。
对于所有评测用例,1 <= n <= 1000000。

我的简陋代码:

s=int(input())
if s<=9:
    print(s)
else:
    count=0
    for i in range(1,s+1):
     b=str(i)
     for j in range(len(b)):
        for k in range(j+1,len(b)):
            j=int(b[j]);k=int(b[k])
            if j<=k:
                count+=1
        #    print(j,k)
        #    print(j+k)
print(count+9)

我的思路: 这道题做的时候,刚开始只知道第一个数和第二个数比较,后面一个数嵌套到里面做遍历就好了;后面寻思着怎么比较第二个和第三个数?? 琢磨着可以用if嵌套,满足后者比前者大就继续,然后这个思路后面几题直接起飞
2020年蓝桥杯模拟赛python水题_第1张图片

第六题 递增三元组

题目
【问题描述】
在数列 a[1], a[2], …, a[n] 中,如果对于下标 i, j, k 满足 0 给定一个数列,请问数列中有多少个元素可能是递增三元组的中心。
【输入格式】
输入的第一行包含一个整数 n。
第二行包含 n 个整数 a[1], a[2], …, a[n],相邻的整数间用空格分隔,表示给定的数列。
【输出格式】
输出一行包含一个整数,表示答案。
【样例输入】
5
1 2 5 3 5
【样例输出】
2
【样例说明】
a[2] 和 a[4] 可能是三元组的中心。
【评测用例规模与约定】
对于 50% 的评测用例,2 <= n <= 100,0 <= 数列中的数 <= 1000。
对于所有评测用例,2 <= n <= 1000,0 <= 数列中的数 <= 10000。
我的简陋代码:

n=int(input())
s=list(map(int,input().split()))
count=0;d=[]
for i in range(n):
    for j in range(i+1,n):
        if s[j]>s[i]:
            for k in range(j+1,n):
                 if s[k]>s[j]:
                     count+=1
                  #   print(s[i],s[j],s[k])
                     d.append(s[j])
d=list(set(d))
print(len(d))

我的思路:延续上一题的思路:先if比较第二个数和第一个数值,满足了接着for嵌套,比较 if s[k]>s[j]: 值,满足存入列表d

第七题 音节判断

题目
【问题描述】
小明对类似于 hello 这种单词非常感兴趣,这种单词可以正好分为四段,第一段由一个或多个辅音字母组成,第二段由一个或多个元音字母组成,第三段由一个或多个辅音字母组成,第四段由一个或多个元音字母组成。
给定一个单词,请判断这个单词是否也是这种单词,如果是请输出yes,否则请输出no。
元音字母包括 a, e, i, o, u,共五个,其他均为辅音字母。
【输入格式】
输入一行,包含一个单词,单词中只包含小写英文字母。
【输出格式】
输出答案,或者为yes,或者为no。
【样例输入】
lanqiao
【样例输出】
yes
【样例输入】
world
【样例输出】
no
【评测用例规模与约定】
对于所有评测用例,单词中的字母个数不超过100。

这道题我延续上一题的if嵌套到for里面的思路,实现类似递归的找值。
写的注释是为了测试if嵌套的点能不能按我的要求执行

s=list(map(str,input()))
#print(s)
a=['a','e','i','o','u'];count=0
if s[0] not in a :
    #    print("1")
        if s[-1] in a :
       #    print("maybe")  
           for i in range(1,len(s)):
               if s[i] in a :
                #   print("change?")
                   for j in range(i+1,len(s)):
                       if s[j] not in a :
                           count=1
           if count==1:
               print("yes")
        else:   
            print("no")


else:
                           print("no")

第九题 序列计数

题目
【问题描述】
小明想知道,满足以下条件的正整数序列的数量:

  1. 第一项为 n;
  2. 第二项不超过 n;
  3. 从第三项开始,每一项小于前两项的差的绝对值。
    请计算,对于给定的 n,有多少种满足条件的序列。
    【输入格式】
    输入一行包含一个整数 n。
    【输出格式】
    输出一个整数,表示答案。答案可能很大,请输出答案除以10000的余数。
    【样例输入】
    4
    【样例输出】
    7
    【样例说明】
    以下是满足条件的序列:
    4 1
    4 1 1
    4 1 2
    4 2
    4 2 1
    4 3
    4 4
    【评测用例规模与约定】
    对于 20% 的评测用例,1 <= n <= 5;
    对于 50% 的评测用例,1 <= n <= 10;
    对于 80% 的评测用例,1 <= n <= 100;
    对于所有评测用例,1 <= n <= 1000。

我的简陋代码:

s=int(input())

for i in range(1,s+1):
    if i<=s:
       print(s,i)
       for j in range(1,s):
        if j<abs(s-i):
         print(s,i,j)       

2020年蓝桥杯模拟赛python水题_第2张图片

你可能感兴趣的:(python,算法,字符串)