卡码网 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确定后续输入的行数。
- 文件结束符(EOF):例如在本地测试中可以通过
- 当
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
相关文章:
卡码网 ACM答题编程模板
背景: input() 在 ACM 编程中的底层调用原理 1. input() 的核心原理 在 Python 中,input() 的底层实现依赖于标准输入流 sys.stdin。每次调用 input() 时,Python 会从 sys.stdin 中读取一行字符串,直到遇到换行符 \n 或文件结束…...
逆向入门(6)汇编篇-外挂初体验
代码分析部分 游戏里面还是体验了不少自己CV来的外挂的,自己编写的程序还是头一次体验,程序源码如下 void startAcctack() {printf("开始攻击\n");// 获取当前系统时间time_t now time(0); // 获取当前时间的时间戳struct tm *local_time …...
Vulnhub靶场(Earth)
项目地址 https://download.vulnhub.com/theplanets/Earth.ova.torrent 搭建靶机 官网下载.ova文件双击vm打开导入 获取靶机IP kail终端输入 arp-scan -l 获取靶机 IP 192.168.131.184 信息收集 端口扫描 sudo nmap -sC -sV -p- 192.168.131.184 可以看到开启22端口&…...
CSP初赛知识学习计划
CSP初赛知识学习计划 学习目标 在20天内系统掌握CSP初赛所需的计算机基础知识、编程概念、数据结构、算法等内容,为初赛取得优异成绩奠定坚实基础。 资料收集 整理的CSP知识点文档。相关教材,如《信息学奥赛一本通》等。在线编程学习平台,…...
信息科技伦理与道德1:研究方法
1 问题描述 1.1 讨论? 请挑一项信息技术,谈一谈为什么认为他是道德的/不道德的,或者根据使用场景才能判断是否道德。判断的依据是什么(自身的道德准则)?为什么你觉得你的道德准则是合理的,其他…...
高中数学部分基础知识
文章目录 一、集合二、一元二次方程三、函数四、指数函数五、对数函数六、三角函数1、角度和弧度2、三角函数 高中知识体系丰富,虽然毕业后再也没用过,但是很多数学逻辑还是非常经典的,能够启发我们如何制作逻辑工具去解决现实问题。以下做出…...
机器人领域的一些仿真器
模拟工具和环境对于开发、测试和验证可变形物体操作策略至关重要。这些工具提供了一个受控的虚拟环境,用于评估各种算法和模型的性能,并生成用于训练和测试数据驱动模型的合成数据。 Bullet Physics Library 用于可变形物体模拟的一个流行的物理引擎是 B…...
5大常见高并发限流算法选型浅析
高并发场景下,如何确保系统稳定运行,成为了每一个开发工程师必须面对的挑战。**你是否曾因系统崩溃、请求超时或资源耗尽而头疼不已?**高并发限流算法或许能帮你解决这些难题。 在处理高并发请求时,应该如何选择合适的限流算法呢…...
深入刨析数据结构之排序(下)
目录 1.内部排序 1.5选择排序 1.5.1简单选择排序 1.5.2树形选择排序 1.6堆排序 1.7归并排序 1.7.1递归归并 1.7.2非递归归并 1.8计数排序 1.9基数排序 常见内部排序的总结: 1.内部排序 1.5选择排序 选择排序(Selection Sort)的基…...
特殊数据类型的深度分析:JSON、数组和 HSTORE 的实用价值
title: 特殊数据类型的深度分析:JSON、数组和 HSTORE 的实用价值 date: 2025/1/4 updated: 2025/1/4 author: cmdragon excerpt: 随着数据管理需求的多样化,许多现代数据库系统开始支持特殊数据类型,以满足更多复杂应用场景的需求。在 PostgreSQL 中,JSON、数组和 HSTOR…...
PCA降维算法详细推导
关于一个小小的PCA的推导 文章目录 关于一个小小的PCA的推导1 谱分解 (spectral decomposition)2 奇异矩阵(singular matrix)3 酉相似(unitary similarity)4 酉矩阵5 共轭变换6 酉等价7 矩阵的迹的计算以及PCA算法推导8 幂等矩阵(idempotent matrix)9 Von Neumanns 迹不等式 [w…...
NS4861 单灯指示独立耳锂电池充放电管理 IC
1 特性 最大 500mA 线性充电电流,外部可调节 内部预设 4.2V 充电浮充电压 支持 0V 电池充电激活 支持充满 / 再充功能 内置同步升压放电模块,输出电压 5.1V 同步升压 VOUT 最大输出电流 500mA VOL/OR 独…...
编写可复用性的模块
在生活中,重复的机械劳动会消耗我们的时间和精力,提高生产成本,降低工作效率。同样,在代码世界中,编写重复的代码会导致代码的冗余,页面性能的下降以及后期维护成本的增加。由此可见将重复的事情复用起来是…...
2025年1月4日CSDN的Markdown编辑器
这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…...
广域网连接PPP
广域网连接PPP PPP协议是一种应用广泛的点到点链路协议,主要用于点到点连接的路由器间的通信。PPP协议既可以用于同步通信,也可以用于异步通信,本部分只讨论同步接口上的PPP配置。 锐捷路由器的同步串行口默认封装Cisco HDLC,所…...
【pyqt】(四)Designer布局
布局 之前我们利用鼠标拖动的控件的时候,发现一些部件很难完成对齐这些工作,pyqt为我们提供的多种布局功能不仅可以让排版更加美观,还能够让界面自适应窗口大小的变化,使得布局美观合理。最常使用的三种布局就是垂直河子布局、水…...
【从零开始入门unity游戏开发之——C#篇40】C#特性(Attributes)和自定义特性
文章目录 前言一、特性(Attributes)基本概念二、自定义特性1、自定义特性代码示例:2、应用自定义特性:3、解释3.1 **AttributeUsage 特性**3.2 特性的命名3.3 **构造函数**:3.4 **属性**: 4、使用反射获取特…...
DES密码的安全性分析(简化版本)
DES仍是世界上使用最广的(DES发行后20年,互联网的兴起,人们开始觉得DES不安全了,但DES的实现成本也越来越低) 宏观分析: 密钥空间方面: 密钥长度:DES 算法使用 56 位的密钥对数据…...
引入三方jar包命令
mvn install:install-file \ -Dfile本地磁盘路径 \ -DgroupId组织名称 \ -DartifactId项目名称 \ -Dversion版本号 \ -Dpackagingjar 例如 假设你的 JAR 文件路径是 /home/user/common-pojo-1.0-SNAPSHOT.jar,组织名称是 com.example,项目名…...
机器学习基础-机器学习的常用学习方法
半监督学习的概念 少量有标签样本和大量有标签样本进行学习;这种方法旨在利用未标注数据中的结构信息来提高模型性能,尤其是在标注数据获取成本高昂或困难的情况下。 规则学习的概念 基本概念 机器学习里的规则 若......则...... 解释:如果…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...
字符串哈希+KMP
P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...
【Ftrace 专栏】Ftrace 参考博文
ftrace、perf、bcc、bpftrace、ply、simple_perf的使用Ftrace 基本用法Linux 利用 ftrace 分析内核调用如何利用ftrace精确跟踪特定进程调度信息使用 ftrace 进行追踪延迟Linux-培训笔记-ftracehttps://www.kernel.org/doc/html/v4.18/trace/events.htmlhttps://blog.csdn.net/…...
嵌入式面试常问问题
以下内容面向嵌入式/系统方向的初学者与面试备考者,全面梳理了以下几大板块,并在每个板块末尾列出常见的面试问答思路,帮助你既能夯实基础,又能应对面试挑战。 一、TCP/IP 协议 1.1 TCP/IP 五层模型概述 链路层(Link Layer) 包括网卡驱动、以太网、Wi‑Fi、PPP 等。负责…...
(12)-Fiddler抓包-Fiddler设置IOS手机抓包
1.简介 Fiddler不但能截获各种浏览器发出的 HTTP 请求,也可以截获各种智能手机发出的HTTP/ HTTPS 请求。 Fiddler 能捕获Android 和 Windows Phone 等设备发出的 HTTP/HTTPS 请求。同理也可以截获iOS设备发出的请求,比如 iPhone、iPad 和 MacBook 等苹…...
多模态大语言模型arxiv论文略读(110)
CoVLA: Comprehensive Vision-Language-Action Dataset for Autonomous Driving ➡️ 论文标题:CoVLA: Comprehensive Vision-Language-Action Dataset for Autonomous Driving ➡️ 论文作者:Hidehisa Arai, Keita Miwa, Kento Sasaki, Yu Yamaguchi, …...
