【kickstart 2021 round C】前三题python题解

2023-11-05

第一题:
题目:给定长度为N的字符串S,它是由字母表上的前K个字母构成,问字典序小于S且长度为N的回文字符串(由字母表上的前K个字母构成)有多少个?
解释:参考官方题解,计算多少个长度为N/2的字符串的字典序小于S[::math.ceil(N/2)],这里计算的方法可采用将字符串转化为K进制数–>十进制数。【代码暂时只能过test set 1,正在查找错误】注:小于该字符串的字符串个数就是这个K进制数。

import math
T=int(input())
for tt in range(T):
    N,K=[int(s) for s in input().split()]
    ss=input()
    if N==1:
        ans=ord(ss)-97
    else:
        hh=math.ceil(N/2)
        s1=ss[:hh]
        mm=[]
        for ii in range(hh):
            mm.append(ord(s1[ii])-97)
        num=0
        for ii in range(hh-1,-1,-1):
            num+=mm[ii]*math.pow(K,hh-ii-1)
        if N%2==0:
            news=s1+s1[::-1]
        else:
            news=s1[:-1]+s1[::-1]
        map_s=[]
        map_news=[]
        for ii in range(N):
            map_s.append(ord(ss[ii])-97)
            map_news.append(ord(news[ii])-97)
        num_s=0
        num_news=0
        for ii in range(N-1,-1,-1):
            num_s+=map_s[ii]*math.pow(K,N-ii-1)
            num_news+=map_news[ii]*math.pow(K,N-ii-1)
        if num_s<=num_news:
            ans=num
        else:
            ans=num+1
        ans=ans%(1e9+7)
    print('Case #%d: %d' %(tt+1,ans))

第二题:
题目:求连续的自然数序列,首项为X,共N项,则末项为X+N-1,该序列的和为(2*X+N-1)N=2G,给定G,求有多少个这样的连续自然数序列。

T=int(input())
for tt in range(T):
    G=int(input())
    N=1
    ans=0
    while N*N<2*G:
        if 2*G%N==0:
            if (2*G/N+1-N)%2==0:
                ans+=1
        N+=1
    print('Case #%d: %d' %(tt+1,ans))

第三题:
题目:你和朋友玩石头剪刀布游戏,朋友的策略是统计你之前出石头剪刀布各项的频率,进而决定自己的当前行为(按概率)。赢和平各得到W分和E分,X为希望达到的T天后的得分平均期望,每天的W和E可能与之前不同,求每天的行为策略(不唯一)。
一开始题意理解错误,我以为朋友只有在有两项或三项概率相同的情况下才会按概率出(其余情况的行为是确定的),这样考虑只能过test 1,先分享这种解法,等我再好好理解下官方题解里如何记录行为矩阵再来更新。

T=int(input())
X=int(input())
for tt in range(T):
    W,E=[int(s) for s in input().split()]
    # everyday there should be output of 60 letters 
    num=W/3+(E/3)
    ans='R'
    map_={'R':1,'P':0,'S':0}
    dict1={'R':'S','P':'R','S':'P'}
    while num<X or len(ans)<60:
        if map_['R']==map_['P']==map_['S']:
            num+=W/3+E/3
            ans+='R'
            map_['R']+=1
        else:
            # max -> 1
            max_v=max(map_.values())
            max_num=0
            can=[]
            for i in ['R','P','S']:
                if map_[i]==max_v:
                    max_num+=1
                    can.append(i)
            if max_num==1:
                num+=W
                ans+=dict1[can[0]]
                map_[dict1[can[0]]]+=1
            else:
                num+=W/3+E/3
                ans+=dict1[can[0]]
                map_[dict1[can[0]]]+=1
            # max -> 2
    if len(ans)>60:
    	ans=ans[:60]
    print('Case #%d: ' %(tt+1), end='')
    print(ans)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【kickstart 2021 round C】前三题python题解 的相关文章

随机推荐

  • 设置windows宿主机内的Linux虚拟机的端口开放

    比如希望开放的是windows内的Linux虚拟机 IP地址 172 30 2 1611 端口 27017 则在windows主机中 用管理员权限打开控制台 并输入 netsh interface portproxy add v4tov4
  • JavaScript 函数防抖(debounce)的实现

    函数防抖是什么 函数防抖是指对于在事件被触发n秒后再执行的回调 如果在这n秒内又重新被触发 则重新开始计时 是常见的优化 适用于 表单组件输入内容验证 防止多次点击导致表单多次提交 等情况 防止函数过于频繁的不必要的调用 代码实现 思路 用
  • tomcat部署项目,ip+端口直接访问项目的三种方式

    部署web项目 需要ip 端口 项目名 路径访问项目 如localhost 8080 springmvc xxx 现在想去掉项目名springmvc 直接输入 localhost 8080 就能访问 三种配置 方式一 项目打war包放到to
  • Makefile文件的简单编写

    参考 MakeFile文件是什么 内容 工作原理 作用 使用 嵌入式操作系统linux篇 书 Makefile伪目标 GNU make中文手册 pdf 在嵌入式开发中 一个工程中的源文件是非常多的 如果一个个编译会很麻烦 Makefile的
  • 寻找SQL注入点

    如果要对一个网站进行SQL注入攻击 首先就需要找到存在SQL注入漏洞的地方 也就是寻找所谓的注入点 可能的SQL注入点一般存在于登录页面 查找页面或添加页面等用户可以查找或修改数据的地方 最常用的寻找SQL注入点的方法 是在网站中寻找如下形
  • PyTorch错误定位系列之DDP训练中 double free or corruption (out)

    背景 最近觉得单卡训练有点慢了 在纠结pytorch lightning和原始distributed训练中选择哪里 最后 从学习的角度选了原生的单机多卡训练 DDP 方式 结果 就把自己埋坑里了 问题 代码写完后 通过torch distr
  • Transformer 模型详解

    本内容主要介绍 Transformer 模型的具体实现 转载自 Transformer 模型详解 https blog csdn net benzhujie1245com article details 117173090 文章目录 1 T
  • npm : 无法加载文件 D:\appCache\nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本。

    鄙人在vscode 下面打开终端运行 npm init y 时 发现居然报错 报错的内容是 npm 无法加载文件 D appCache nodejs node global npm ps1 因为在此系统上禁止运行脚本 问题原因 在此系统上禁
  • uniapp之请求拦截器和响应拦截器的使用

    拦截器 目录如下 api js api配置 env js 环境配置 interceptors 拦截器 index js 导出配置 main js 注入 页面使用 页面展示 目录如下 api js api配置 export const api
  • 以太网数据链路层、Ethernet_II帧格式、IEEE802.3帧格式,以太网的MAC地址的组成,ARP地址解析协议的工作原理,单播帧、组播帧、广播帧的区别

    目录 数据链路层 以太网 链路一般分为两种 以太网的MAC地址 以太网帧格式 Ethernet II帧格式 IEEE802 3帧格式 帧格式 编辑地址解析协议 ARP 免费arp 代理arp 目标MAC地址没有怎么办 什么是单播帧 什么是组
  • 第四章:项目整合管理 - (4.1 制定项目章程)

    制定项目章程 1 编写一份正式批准项目并授权项目经理在项目活动中使用组织资源文件的过程 2 本过程的主要作用 明确项目与组织战略之间的关系 确立项目的正式地位 并展示组织对项目的承诺 3 本过程仅开展一次或仅在项目的预定义点开展 项目发起人
  • CentOS安装Docker

    目录 一 前置条件 二 安装Docker 安装方式 配置镜像仓库 执行安装 启动Docker 检查Docker是否可以正常运行 三 卸载Docker 卸载Docker核心组件 清理Docker相关资源 参考文档 一 前置条件 安装 Dock
  • 机械臂控制-2

    创建机制或机器人 按照以下步骤在RoboDK中创建新机制或机器人 1 选择实用程序 模型机制或机器人 2 选择要创建的机制或机械手的类型 3 选择代表机构原点的坐标系 4 为每个关节选择一个对象 移动机构或机器人的一部分 5 按相应图像中的
  • 优酷网视频存储架构

    优酷网视频存储架构 http blog csdn net starxu85 article details 5673029 挖掘优酷网的架构是怎样的 http datacenter watchstor com infra 135196 ht
  • RuntimeException和Exception区别

    1 java将所有的错误封装为一个对象 其根本父类为Throwable Throwable有两个子类 Error和Exception 2 Error是Throwable 的子类 用于指示合理的应用程序不应该试图捕获的严重问题 大多数这样的错
  • git merge与git rebase详解

    参考 http t csdn cn CkVrR https blog csdn net weixin 42310154 article details 119004977 一 简单图示 1 merge 2 rebase 经验 一般来说 不推
  • 机器学习 day18(用Tensorflow搭建一个神经网络)

    1 之前搭建神经网络的方法 先初始化输入数据X 创建layer 1并计算激活值a1 创建layer 2并计算激活值a2 这是前向传播代码的显式形式 2 另一种简单些的创建神经网络的方法 创建layer 1和layer 2与前一种方法相同 但
  • 17_分布式文档系统_document的全量替换、强制创建以及lazy delete机制

    课程大纲 1 document的全量替换 2 document的强制创建 3 document的删除 1 document的全量替换 1 语法与创建文档是一样的 如果document id不存在 那么就是创建 如果document id已经
  • Swagger

    第一节 Swagger 简介 1 企业开发所面临的问题 在前后端分离开发的情况下 前端开发人员经常抱怨后端开发人员给的接口文档与实际情况不一致 后端开发人员觉得编写接口文档太过于消耗精力 而且更新也不及时 以至于前后端开发人员经常出现争吵的
  • 【kickstart 2021 round C】前三题python题解

    第一题 题目 给定长度为N的字符串S 它是由字母表上的前K个字母构成 问字典序小于S且长度为N的回文字符串 由字母表上的前K个字母构成 有多少个 解释 参考官方题解 计算多少个长度为N 2的字符串的字典序小于S math ceil N 2