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