字母数&&外卖店优先级

题目

请找到一个大于 2022的最小数,这个数转换成十六进制之后,所有的数位(不含前导 0)都为字母(A 到F)。

请将这个数的十进制形式作为答案提交。

思路

暴力直接遍历。转十六进制函数:hex(),判断全为字母:words.isalpha() 

也可以直接算,2022的十六进制:0x7e7,则全是字母的最小十六进制为:0xaaa,将该数转化为十进制输出。

代码

num = 2022
while True:
  hexnum = hex(num)[2:]
  if all(x.isalpha() for x in hexnum): #all()返回一个bool变量
    print(num)
    break
  num += 1
# a = 2022
# b = hex(a)
# # b=0x7e7
# print(int(0xaaa))

tips:

二进制 bin()

八进制 oct()

十进制int()

十六进制hex() 

 int(‘1010’,2) --> 10

 int(‘12’,8) --> 10

int(‘a’,16) --> 10 

题目

"饱了么"外卖系统中维护着N 家外卖店,编号 1 ∼ N。每家外卖店都有 一个优先级,初始时 (0 时刻) 优先级都为 0。

每经过 1 个时间单位,如果外卖店没有订单,则优先级会减少 1,最低减 到 0;而如果外卖店有订单,则优先级不减反加,每有一单优先级加 2。

如果某家外卖店某时刻优先级大于 5,则会被系统加入优先缓存中;如果 优先级小于等于 3,则会被清除出优先缓存。

给定T 时刻以内的M 条订单信息,请你计算T 时刻时有多少外卖店在优先缓存中?

思路

只通过3个用例,但是不知道哪里出了问题 也没办法看见每个用例的具体情况。

代码 

import os
import sys

# 请在此输入您的代码
N, M, T = map(int, input().split())
stor_dict = {}
for i in range(M):
  ts, stor_id = map(int, input().split())
  if stor_id not in stor_dict.keys():
    stor_dict[stor_id] = [ts]
  else:
    stor_dict[stor_id].append(ts)

count = 0
for i in stor_dict.keys(): #对每家店的订单进行遍历
  temp = sorted(stor_dict[i]) # 对订单的时间进行排序
  order = 2 #初始化优先级为2 因为从第一个有订单的时间开始 order = 2 因为优先级最低为0
  for j in range(1, len(temp)): #对第二个订单时间开始遍历
    if temp[j] <= T: #存在T时刻是订单的中间时刻 当订单时间大于该时刻就跳出循环 对当前的优先级进行判断
      if temp[j] - temp[j-1] <= 1: #后面一个订单时间与前面订单时间相同或者相隔为1 则优先级+2
        order += 2
      else: #相隔>1 oder = 当前oder - (相隔时间) + 1 + 2
        order =order - (temp[j] - temp[j-1]) + 3
      if order < 0: # order最小为0
        order = 0
    else:
      break

  if temp[-1] < T: #当最后一个订单时间<T,则这段空闲时间order需要减去两者之间的差值
    order = order - (T - temp[-1])

  if order > 5: 
    count += 1
    

print(count)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值