Python之旅(做题笔记)——Day7.20

  • Post author:
  • Post category:python


今日份感想:今天好忙,偷闲做了几题:)

题源都来自洛谷


目录


P1152 欢乐的跳


P1909 [NOIP2016 普及组] 买铅笔


P1161 开灯


P1152 欢乐的跳


看了好几遍题目才明白它的意思-.-

我的想法是另开一个list来记录[1,n-1]哪些整数出现过,出现过mark 1,最后统计list中1的数量,要是满足n-1个,即为“Jolly”

AC代码:

nums = input().split()
n = int(nums[0])
mark = list()
for i in range(n):
    mark.append("0")
    mark[i] = int(mark[i])
for i in range(1,n):
    t = int(nums[i])-int(nums[i+1])
    cnd = abs(t)
    if cnd >= 1 and cnd <= (n-1):
        mark[cnd-1] = 1
if mark.count(1) == n-1:
    print("Jolly")
else:
    print("Not jolly")

P1909 [NOIP2016 普及组] 买铅笔


这题第一反应就是暴力破解哈哈哈,就是分成三组分别计算,最后输出最小的,连每一组计算的代码都一样。我记得以前做过类似的题不过难一点,把固定三组改成输入n组,然后再分成n组输入每一组的数据;但也简单,输入一组算一组,再把算出来的金额持续进行打擂台就可以得出最少花费。

AC代码:

n = int(input()) #直接就是一个暴力破解的大动作
k = input().split()
m1 = int(k[0])
m2 = int(k[1])
if n%m1 != 0:
    pay_1 = m2 * (int(n/m1)+1)
else:
    pay_1 = m2 * (n/m1)
k = input().split()
m1 = int(k[0])
m2 = int(k[1])
if n%m1 != 0:
    pay_2 = m2 * (int(n/m1)+1)
else:
    pay_2 = m2 * (n/m1)
k = input().split()
m1 = int(k[0])
m2 = int(k[1])
if n%m1 != 0:
    pay_3 = m2 * (int(n/m1)+1)
else:
    pay_3 = m2 * (n/m1)
final_pay = min(pay_1,pay_2,pay_3)
print(f"{int(final_pay)}")

P1161 开灯

灵活变换数据类型就好了,还有就是表要开大一点

AC代码:

light = list()
for i in range(1000001):
    light.append("0")
    light[i] = int(light[i])
n = int(input())
for i in range(n):
    inp = input().split()
    a = float(inp[0])
    t = int(inp[1])
    for j in range(1,t+1):
        q = int(a*j)
        if light[q] == 0:
            light[q] = 1
        else:
            light[q] = 0
cnd = light.index(1)
print(f"{cnd}")



版权声明:本文为DreamKx原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。