卡码网 ACM答题编程模板

背景:

input() 在 ACM 编程中的底层调用原理

1. input() 的核心原理
  • 在 Python 中,input() 的底层实现依赖于标准输入流 sys.stdin
  • 每次调用 input() 时,Python 会从 sys.stdin 中读取一行字符串,直到遇到换行符 \n 或文件结束符(EOF)。
  • 读取的数据会以字符串形式返回,并自动去掉行末的换行符。
2. 输入在 ACM 编程中的特点
  • 在 ACM 比赛中,输入通常是标准输入形式(例如,通过 stdin 提供一个多行文本流)。
  • Python 的 input() 会逐行读取这些数据,因此与每次调用 input() 配合使用,可以逐步解析多行输入。
3. 如何处理输入结束
  • 在竞赛中,输入结束通常通过以下方式实现:
    • 文件结束符(EOF):例如在本地测试中可以通过 Ctrl+D(Linux/Mac)或 Ctrl+Z(Windows)模拟输入结束。
    • 固定输入行数:通过第一行的数字 n 确定后续输入的行数。
  • input() 遇到 EOF 时,会抛出 EOFError 异常,可以通过 try-except 捕获并处理。

 另一种读入方式是:

import sys
input = sys.stdin.read  # 读取所有输入
data = input().splitlines()  # 按行分割print(data)

1.

输入形式:

输入是一系列的a和b对(字符串),通过空格隔开。一对a和b占一行:


while True:try:s = input().split(' ')a, b = int(s[0]), int(s[1])print(a + b)except EOFError:break

2.

输入形式:

输入是一中复合信息,第一行表示总共有多少行输入,后面跟实际输入:


def calculate(s):return int(s[0]) + int(s[1])while True:try:n = int(input())for i in range(n):s = input()s = s.split(' ')print(calculate(s))except EOFError:break

 3. 

输入形式:

有一个终止判断的输入形式 

while True:try:s = input()num = s.split(' ')res = int(num[0]) + int(num[1])if s != '0 0':print(res)except EOFError:break

4. 

输入形式:

一个长的字符串,有一部分需要,一部分不重要。使用map函数进行整体数据类型的变化(重要)。


while True:nums = input().split()if int(nums[0]) == 0:breaknums = list(map(int, nums[1:]))ans = sum(nums)print(ans)

5.

 输入形式:

不同输入形式,输出要求包含空行隔断。

while True:try:a, b = input().split(' ')print(int(a) + int(b), end='\n\n')except Exception:break

6.

输入形式:

最后一行不要换行,因此第一个输入是有用的,使用第一个input的信息进行循环。 

1. input() 是逐行读取的
  • input() 是 Python 的内置函数,用于从标准输入中读取一行文本。每次调用 input(),它会等待用户输入一行文本并按下回车后返回该行的内容。
  • 在这段代码中,n = int(input()) 只读取第一行输入,不会影响后续的输入数据。后续的 input() 调用会依次读取剩下的每一行。
2. 每次 input() 独立处理一行
  • for i in range(n) 中,input() 会独立读取每一行数据,并将其作为当前循环的输入。
  • 因此,即使后续输入中包含多组数据,也不会干扰 n 的值或控制循环次数。
while True:try:n = int(input())for i in range(n):nums = list(map(int, input().split(' ')))print(sum(nums[1:]))if i != n - 1:print()except Exception:break

7.

 输入形式:

需要使用字典维护输入字符串


gpa_map = {'A': 4,'B': 3,'C': 2,'D': 1,'F': 0,
}while True:try:input_grade = input().split(' ')sum_grade = 0valid = Truefor grade in input_grade:if grade in gpa_map:sum_grade += gpa_map[grade]else:print('Unknown')valid = Falsebreakif valid:print("{:.2f}".format(sum_grade/len(input_grade)))except EOFError:break

格式化函数:

数字格式输出描述
3.1415926{:.2f}3.14保留小数点后两位
3.1415926{:+.2f}+3.14带符号保留小数点后两位
-1{:-.2f}-1.00带符号保留小数点后两位
2.71828{:.0f}3不带小数
5{:0>2d}05数字补零 (填充左边, 宽度为2)
5{:x<4d}5xxx数字补x (填充右边, 宽度为4)
10{:x<4d}10xx数字补x (填充右边, 宽度为4)
1000000{:,}1,000,000以逗号分隔的数字格式
0.25{:.2%}25.00%百分比格式
1000000000{:.2e}1.00e+09指数记法
13{:>10d}        13右对齐 (默认, 宽度为10)
13{:<10d}13左对齐 (宽度为10)
13{:^10d}    13中间对齐 (宽度为10)
11
'{:b}'.format(11)
'{:d}'.format(11)
'{:o}'.format(11)
'{:x}'.format(11)
'{:#x}'.format(11)
'{:#X}'.format(11)
1011
11
13
b
0xb
0XB
进制

8.

 输入形式:

分行式的多组测试样例,先用sys.stdin.read + input().splitlines() 看一下整体输入,然后根据题意答题

import sysdef mean(s):return sum(s) / len(s)while True:try:heap_num = int(input())heap_list = list(map(int, input().split(' ')))ave_height = mean(heap_list)move = 0for i in range(len(heap_list)):if heap_list[i] - ave_height > 0:move += heap_list[i] - ave_heightprint(int(move))print()except EOFError:break

 9.

输入形式:

字符串输入转整型判断


while True:try:s = input()# print(s)res = 0for i in s:if int(i) % 2 == 0:res += int(i)print(res, end='\n\n')except EOFError:break

10.

输入形式:

本题开始稍加一点难度,主要是展示使用函数对象入门

def calculate(m, k):if k:bonus = m // k if bonus or m - (bonus * k) + bonus > k:bonus += calculate(m % k + bonus, k)return bonuselse:return 0while True:try:m, k = list(map(int, input().split(' ')))if m == 0 and k == 0:breakres = m + calculate(m, k) print(res)except EOFError:break

 11. 共同祖先

输入形式:

输入作为字典键值对录入

def find_ansester(i, family_dict):gen = 0while i:i = family_dict.get(i, '')if i != '':gen += 1return gendef find_relation(a, b, family_dict):a_gen = find_ansester(a, family_dict)b_gen = find_ansester(b, family_dict)# print(a_gen, b_gen)if a_gen > b_gen:print('You are my elder')elif a_gen < b_gen:print('You are my younger')else:print('You are my brother')while True:try:generation = int(input())family_dict = dict()for i in range(generation):son, dad = list(map(int, input().split(' ')))family_dict[son] = dadfind_relation(1, 2, family_dict)except EOFError:break

12. 打印数字图形

 输入描述:

简单输入,模拟类题目,直接暴力


while True:try:n = int(input())for i in range(1, n + 1):left = [' '] * (n - i) + [str(j) for j in range(1, i + 1)]tmp = left[:-1]right = tmp[::-1]right = [ele.replace(' ', '') for ele in right]s = left + rightprint(''.join(s))for i in range(n - 1, 0, -1):left = [' '] * (n - i) + [str(j) for j in range(1, i + 1)]tmp = left[:-1]right = tmp[::-1]right = [ele.replace(' ', '') for ele in right]s = left + rightprint(''.join(s))except EOFError:break

13. 镂空三角形

输入形式:

有终止符号,注意判断。模拟类问题

while True:try:## 每一行实际数量是 i * 2 - 1 行前空格数是n - iline = input().split()if line[0] == '@':breakn = int(line[1])pattern = line[0]for i in range(1, n + 1):if i < n:t = [' '] * (n - i)new_s = list()for idx in range(i * 2 - 1):if idx == 0 or idx == i * 2 - 2:new_s.append(pattern)else:new_s.append(' ')row = t + new_selse:row = [pattern] * (i * 2 - 1)print(''.join(row))print()except EOFError:break

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/502211.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux驱动开发(18):linux驱动并发与竞态

并发是指多个执行单元同时、并行执行&#xff0c;而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问 则很容易导致竞态。对于多核系统&#xff0c;很容易理解&#xff0c;由于多个CPU同时执行&#xff0c;多个CPU同时读、写共享资源时很容易造成竞态。…

k8s基础(3)—Kubernetes-Deployment

一、 Deployment概述 ‌ Kubernetes Deployment‌是Kubernetes中的一个核心概念&#xff0c;它是一种高级别的控制器&#xff0c;用于管理Pod和ReplicaSet&#xff0c;确保应用程序的高可用性和稳定性。Deployment通过声明式配置来创建和更新Pod和ReplicaSet&#xff0c;从而…

windows11(或centos7)安装nvidia显卡驱动、CUDA、cuDNN

本文是我瞎搞时写的问题汇总及参考文献&#xff0c;记录了一些问题解决的进度及对问题的思考。 最近一次更新时间&#xff1a;2025年1月4日 一、安装或更新nvidia显卡驱动 首先&#xff0c;需要确保你的设备安装了最新的显卡驱动。 &#xff08;1&#xff09;centos7安装显…

【光纤通信】光纤结构

光纤结构主要由折射率较高的纤芯&#xff08;core&#xff09;部分和折射率较低的包层&#xff08;cladding&#xff09;部分以及涂覆层&#xff08;buffer coating&#xff09;组成。 光纤的分类方法有很多种&#xff0c;如按纤芯折射率分布、按纤芯结构、按二次涂覆层结构、按…

急需升级,D-Link 路由器漏洞被僵尸网络广泛用于 DDoS 攻击

僵尸网络活动增加 &#xff1a;新的“FICORA”和“CAPSAICIN”僵尸网络&#xff08;Mirai 和 Kaiten 的变体&#xff09;的活动激增。 被利用的漏洞 &#xff1a;攻击者利用已知的 D-Link 路由器漏洞&#xff08;例如 CVE-2015-2051、CVE-2024-33112&#xff09;来执行恶意命…

Eplan 项目结构(高层代号、安装地点、位置代号)

Eplan中的项目结构分为3个层次&#xff1a; &#xff08;1&#xff09;功能面结构。指明这个系统的功能&#xff0c;有什么用途。在EPlan中&#xff0c;指的就是"高层代号&#xff08;&#xff09;"。 一般指的是线体。 &#xff08;2&#xff09;位置面结构。指明该…

网络安全之高防IP的实时监控精准防护

高防IP是一种网络安全设备&#xff0c;用于保护网络服务不受到各类攻击的影响&#xff0c;确保业务的持续稳定运行。它通过监控、识别和封锁恶意攻击流量&#xff0c;提供高级别的防护&#xff0c;降低业务被攻击的风险&#xff0c;并提升网络的稳定性和可靠性。 一、实时监控的…

RabbitMQ实现生产者消费者

一.启动MQ 注意管理员身份进入cmd才行,我这里是在本地安装的MQ,推荐使用虚拟机安装 二.思路 官方解释RabbitMQ结构: 自我理解RabbitMQ结构: 其实RabbitMQ的服务器就像邮局一样,我们的生产者和消费者对于这个服务器来说都是消费者,因为服务器都可以向两者发送消息 环境准备 …

【计算机视觉技术 - 人脸生成】2.GAN网络的构建和训练

GAN 是一种常用的优秀的图像生成模型。我们使用了支持条件生成的 cGAN。下面介绍简单 cGAN 模型的构建以及训练过程。 2.1 在 model 文件夹中新建 nets.py 文件 import torch import torch.nn as nn# 生成器类 class Generator(nn.Module):def __init__(self, nz100, nc3, n…

matlab中高精度计算函数vpa与非厄米矩阵本征值的求解

clear;clc;close all tic %并行设置% delete(gcp(nocreate));%关闭之前的并行 cparcluster(local); c.NumWorkers50;%手动设置线程数(否则默认最大线程为12) parpool(c, c.NumWorkers); %并行设置%w1; u2.5;N30;valstozeros(2*N2,100); v10linspace(-3,3,100).;parfor jj1:leng…

旧服务改造及微服务架构演进

旧服务改造及微服务架构演进 微服务架构演进1.微服务架构2.微服务架构的特点3.单体架构与微服务架构之间的对比4.微服务架构演进历程 旧服务改造1. 微服务拆分的一些通用原则2.微服务拆分策略&#xff08;1&#xff09;功能维度拆分策略&#xff08;2&#xff09;非功能维度拆分…

springmvc--请求参数的绑定

目录 一、创建项目&#xff0c;pom文件 二、web.xml 三、spring-mvc.xml 四、index.jsp 五、实体类 Address类 User类 六、UserController类 七、请求参数解决中文乱码 八、配置tomcat,然后启动tomcat 1. 2. 3. 4. 九、接收Map类型 1.直接接收Map类型 &#x…

Navicat 17 for Mac 数据库管理软件

Mac分享吧 文章目录 效果一、准备工作二、开始安装1. 双击运行软件&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕。2. 应用程序/启动台显示Navicat图标&#xff0c;表示安装成功。 二、运行测试运行后提示&#xff1a;“Navicat Premium.pp”已损坏&#x…

Lombok @Data无法 import 导入的问题解决办法

问题原因&#xff1a;Maven Pom中依赖的Lombok版本与安装在eclipse根目录下的Lombok版本不一致 解决办法&#xff1a;找到Maven Pom依赖版本的Lombok Jar包&#xff0c;执行命令&#xff1a;java -jar lombok-1.18.36.jar&#xff0c;运行如下图&#xff0c;然后安装即可。这样…

对计网大题的一些指正(中间介绍一下CDM的原理和应用)

目录 前言&#xff1a; &#xff08;1&#xff09;五层原理体系结构每层功能&#xff1a; 下面是文档的答案&#xff1a; 我在之前的博客里面有介绍过五层原理体系结构&#xff0c; 按理来说&#xff0c;第五层应该是应用层才对&#xff0c;而会话层的功能应该被放到应用层…

RISC-V学习笔记

1.RISC ISA1个基本整数指令集多个可选的扩展指令集&#xff0c;如RV32I表示支持32位整数指令集。I表示基本指令集&#xff0c;M表示整数乘法与除法指令集&#xff0c;A表示存储器原子指令集&#xff0c;F表示单精度浮点指令集&#xff0c;D表示双精度浮点指令集等&#xff0c;C…

SpringBoot入门之创建一个Hello World项目

文章目录 一、使用传统的方式1、创建一个SpringBoot项目2、配置pom.xml文件3、下载Maven依赖4、创建一个Controller类&#xff1a;com.devops.controller.HelloController5、创建一个引导类&#xff1a;com.devops.HelloApplication6、启动项目8、访问80809、完整项目结构 二、…

三、GIT与Github推送(上传)和克隆(下载)

GIT与Github推送&#xff08;上传&#xff09;和克隆&#xff08;下载&#xff09; 一、配置好SSH二、在Github创建仓库三、git克隆&#xff08;下载&#xff09;文件四、git推送&#xff08;上传&#xff09;文件到远程仓库 一、配置好SSH Git与Github上传和下载时需要使用到…

深入理解属性抽取:实体内部特征信息的挖掘

目录 前言1. 属性抽取的定义与任务1.1 属性抽取的定义1.2 属性抽取的主要任务 2. 属性抽取的技术方法2.1 基于规则的方法2.2 基于机器学习的方法常用模型特征设计 2.3 基于深度学习的方法常用模型架构优势与挑战 2.4 无监督与弱监督方法 3. 属性抽取面临的挑战与应对策略3.1 挑…

145页PPT智慧矿山整体规划建设方案

本资料收录在【智慧方案文库】知识星球&#xff08;截止目前共9500份&#xff0c;PPTWORD超过7000份&#xff0c;持续上传中......&#xff09; 68页PPT丨5G智能矿山解决方案 77页PPT智慧矿山整体规划建设方案