• CCF CSP认证 历年题目自练Day13


    CCF CSP认证 历年题目自练Day13

    题目一

    试题编号: 201612-1
    试题名称: 中间数
    时间限制: 1.0s
    内存限制: 256.0MB
    问题描述:
    问题描述
      在一个整数序列a1, a2, …, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。
      给定一个整数序列,请找出这个整数序列的中间数的值。
    输入格式
      输入的第一行包含了一个整数n,表示整数序列中数的个数。
      第二行包含n个正整数,依次表示a1, a2, …, an。
    输出格式
      如果约定序列的中间数存在,则输出中间数的值,否则输出-1表示不存在中间数。
    样例输入
    6
    2 6 5 6 3 5
    样例输出
    5
    样例说明
      比5小的数有2个,比5大的数也有2个。
    样例输入
    4
    3 4 6 7
    样例输出
    -1
    样例说明
      在序列中的4个数都不满足中间数的定义。
    样例输入
    5
    3 4 6 6 7
    样例输出
    -1
    样例说明
      在序列中的5个数都不满足中间数的定义。
    评测用例规模与约定
      对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ ai ≤ 1000。

    题目分析(自己理解)

    1. 对于输入过于常规不用解释,直接
      n=int(input())
      num=list(map(int,input().split()))

    2. 我先按从小到大的顺序排列,然后找到中间位置,不管中间数是否重复,只要通过位序确定中间数(还未确定),然后再将大于中间数的个数和小于中间数的个数进行统计,如果两者相等就可以确定并输出中间数。

    3. 常用方法使用sorted()函数进行排列,关键是中间数的位置该如何判断,题目中的例子很有陷阱,只有n为偶数的情况,但是我们还需要考虑到奇数的情况。对于奇数个数比如n=5输入1 2 3 4 5
      或者1 3 3 3 5(大家可以试试,看看算法是否满足所有情况)我用mid1代表在奇数情况下中间数的值(未确定)mid1=num[(n-1)//2]然后去做确定判断
      for i in range(n):
      if num[i] < mid1:
      small1 += 1
      elif num[i] > mid1:
      big1 += 1
      if small1==big1:
      print(mid1)

    4. 对于偶数,同理我设置中间值(未确定)==为mid=num[(n//2+1)-1]==确定步骤一样。

    5. 上代码!!!

    n=int(input())
    num=list(map(int,input().split()))
    small1=0
    big1=0
    num=sorted(num)
    mid1=num[(n-1)//2]
    if n/2!=0:
        for i in range(n):
            if num[i] < mid1:
                small1 += 1
            elif num[i] > mid1:
                big1 += 1
        if small1==big1:
            print(mid1)
        else:
            print("-1")
    else:
        mid=num[(n//2+1)-1]
        small=0
        big=0
        for i in range(n):
            if num[i]<mid:
                small+=1
            elif num[i]>mid:
                big+=1
        if big==small:
            print(mid)
        else :
            print("-1")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    题目二

    试题编号: 201612-2
    试题名称: 工资计算
    时间限制: 1.0s
    内存限制: 256.0MB
    问题描述:
    问题描述
      小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资。假设他一个月的税前工资(扣除五险一金后、未扣税前的工资)为S元,则他应交的个人所得税按如下公式计算:
      1) 个人所得税起征点为3500元,若S不超过3500,则不交税,3500元以上的部分才计算个人所得税,令A=S-3500元;
      2) A中不超过1500元的部分,税率3%;
      3) A中超过1500元未超过4500元的部分,税率10%;
      4) A中超过4500元未超过9000元的部分,税率20%;
      5) A中超过9000元未超过35000元的部分,税率25%;
      6) A中超过35000元未超过55000元的部分,税率30%;
      7) A中超过55000元未超过80000元的部分,税率35%;
      8) A中超过80000元的部分,税率45%;
      例如,如果小明的税前工资为10000元,则A=10000-3500=6500元,其中不超过1500元部分应缴税1500×3%=45元,超过1500元不超过4500元部分应缴税(4500-1500)×10%=300元,超过4500元部分应缴税(6500-4500)×20%=400元。总共缴税745元,税后所得为9255元。
      已知小明这个月税后所得为T元,请问他的税前工资S是多少元。
    输入格式
      输入的第一行包含一个整数T,表示小明的税后所得。所有评测数据保证小明的税前工资为一个整百的数。
    输出格式
      输出一个整数S,表示小明的税前工资。
    样例输入
    9255
    样例输出
    10000
    评测用例规模与约定
      对于所有评测用例,1 ≤ T ≤ 100000。

    题目分析(个人理解)

    1. 读完题目首先想到肯定要用分支结构。比第一题还简单,我可以直接按照超过3500的部分倒推未交费的收入,就是算的多一点。思路很明确,直接上代码!
    T=int(input())
    t=T-3500
    if t<=0:
        A=t
    elif t<=1455:
        A=t/0.97
    elif t<=4155:
        A=1500+(t-1455)/0.9
    elif t<=7755:
        A=4500+(t-4155)/0.8
    elif t<=27255:
        A=9000+(t-7755)/0.75
    elif t<=41255:
        A=35000+(t-27255)/0.7
    elif t<=57505:
        A=55000+(t-41255)/0.65
    else:
        A=80000+(t-57505)/0.55
    print(int(A)+3500)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    总结

    猜猜是夕阳还是朝阳?
    请添加图片描述
    请添加图片描述

  • 相关阅读:
    init container
    客观评价一下GPT-4o
    String、StringBuffer 、StringBuilder、StringJoiner
    Python | Leetcode Python题解之第203题移除链表元素
    信奥中的数学:斐波那契数列
    自研API 网关 - 媲美美团这套Shepherd网关架构!
    【Linux】基础:进程地址空间
    保边滤波之基于测地距离的滤波与局部拉普拉斯滤波
    数据结构与算法-生成树与最小生成树
    传统直线检测算法与基于深度学习的直线检测算法
  • 原文地址:https://blog.csdn.net/m0_63216005/article/details/133293636