Python|每日一练|取余%|向上取整math.ceil ()|周期数补0位| index()方法:吃!吃!吃!

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

题目名称吃!吃!吃!

时间限制1000ms内存限制256M

题目描述

已知n个整数。 每3个数算一个周期。 不足一个周期补0. 在周期的第一个位置的数的权值和等于a1+a[1+3]+… … 求三个数的最大权值。 如果最大权值为第一个数输出’J’ 最大权值为第二个数输出’H’ 最大权值为第三个数输出’B’。

输入描述

第一行输入一个整数n。(1<=n<=100) 第二行输入n个整数。

输出描述

输出答案。

示例 

示例1

输入4
1 1 1 1
复制

输出J

模板

# 请关闭中文输入法用英文的字母和标点符号。
# 如果你想运行系统测试用例请点击【执行代码】按钮如果你想提交作答结果请点击【提交】按钮
# 注意除答案外请不要打印其他任何多余的字符以免影响结果验证
# 本OJ系统是基于 OxCoder 技术开发网址www.oxcoder.com
# 模版代码提供基本的输入输出框架可按个人代码习惯修改

class Solution:
    def __init__(self) -> None:
        pass

    def solution(self, n, arr):
        result = None

        # TODO: 请在此编写代码

        return result


if __name__ == "__main__":
    n = int(input().strip())

    arr = [int(item) for item in input().strip().split()]

    sol = Solution()
    result = sol.solution(n, arr)

    print(result)

解题思路

1、已知n个整数。 每3个数算一个周期。 不足一个周期补0.

如果不是完整的3的周期数则有n % 3= 0

2、凑齐3的最小倍数调用math函数库 math.ceil(n / 3) * 3尾部循环补0arr.append(0)

以示例为例输入1 1 1 1补0后arr= [1, 1, 1, 1, 0, 0]

3、”第一个位置的数的权值和等于res1+res[1+3]+… … 求三个数的最大权值”

释义

将每个周期内的三个位置分别定义为0,1,2不同周期的相同位置加和并保存在数组res中

如果最大的加和题意所指的最大权重出现的位置是在0位即最大权值为第一个数则输出‘J’

如果最大的加和题意所指的最大权重出现的位置是在1位即最大权值为第二个数则输出‘H’

其他情况出现在2位最大权值为第三个数输出’B’

示例代码

import math
class Solution:
    def __init__(self) -> None:
        pass
    def solution(self, n, arr):
        result = None
        res= []
        if n % 3 != 0:
            for i in range(n, math.ceil(n / 3) * 3):
                arr.append(0)
                n += 1
        for i in range(0, 3):
            sum_i = 0
            for j in range(0, int(n / 3)):
                sum_i += arr[i + 3 * j]
            res.append(sum_i)
        if res.index(max(res)) == 0:
            result = "J"
        elif res.index(max(res)) == 1:
            result = "H"
        else:
            result = "B"
        return result

if __name__ == "__main__":
    n = int(input().strip())
    arr = [int(item) for item in input().strip().split()]
    sol = Solution()
    result = sol.solution(n, arr)
    print(result)

PS: Python index()方法

https://www.runoob.com/python/att-string-index.html


描述

Python index() 方法检测字符串中是否包含子字符串 str 如果指定 beg开始 end结束 范围则检查是否包含在指定范围内该方法与 python find()方法一样只不过如果str不在 string中会报一个异常。

语法

index()方法语法

str.index(substring, beg=0, end=len(string))

参数

  • substring -- 指定检索的字符串。
  • beg -- 开始索引默认为 0
  • end -- 结束索引默认为字符串的长度。

返回值

如果包含子字符串返回开始的索引值否则抛出异常。

实例

以下实例展示了 index() 方法的实例

实例(Python 2.0+)

#!/usr/bin/python
 
str1 = "this is string example....wow!!!"
str2 = "exam"
 
print str1.index(str2)
print str1.index(str2, 10)
print str1.index(str2, 40)

以上实例输出结果如下

15

15

Traceback (most recent call last):

  File "test.py", line 8, in

  print str1.index(str2, 40);

ValueError: substring not found

shell returned 1

注意在接下来的几个章节中我们会详细介绍 Python Exception 的使用。

PS2: Python math.ceil() 方法

引自https://www.runoob.com/python3/ref-math-ceil.html

Python math.ceil(x) 方法将 x 向上舍入到最接近的整数。

math.floor() 方法将数字向下舍入到最接近的整数。

语法

math.ceil() 方法语法如下

math.ceil(x)

参数说明

  • x -- 必需数字。如果 x 不是一个数字返回 TypeError

返回值

返回一个整数表示舍入的数字。

实例

以下实例返回向上舍入到最接近的整数

实例

# 导入 math
import math

# 输出向上舍入到最接近的整数
print(math.ceil(1.4))
print(math.ceil(5.3))
print(math.ceil(-5.3))
print(math.ceil(22.6))
print(math.ceil(10.0))

输出结果

2
6
-5
23
10
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: python