当前位置: 首页 > web >正文

[蓝桥杯]地址转换

地址转换

题目描述

Excel 是最常用的办公软件。每个单元格都有唯一的地址表示。比如:第 12 行第 4 列表示为:"D12",第 5 行第 255 列表示为"IU5"。

事实上,Excel 提供了两种地址表示方法,还有一种表示法叫做 RC 格式地址。第 12 行第 4 列表示为:"R12C4",第 5 行第 255 列表示为"R5C255"。

你的任务是:编写程序,实现从 RC 地址格式到常规地址格式的转换。

输入描述

用户先输入一个整数 n (n<100)n (n<100),表示接下来有 nn 行输入数据。

接着输入的 nn 行数据是 RC 格式的 Excel 单元格地址表示法。

输出描述

程序则输出 nn 行数据,每行是转换后的常规地址表示法。

输入输出样例

示例

输入

用户输入:
2
R12C4
R5C255

输出

D12
IU5

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

总通过次数: 1194  |  总提交次数: 1232  |  通过率: 96.9%

难度: 中等   标签: 2012, 模拟, 国赛

Excel地址转换算法解析与实现

📌 问题分析

需要将Excel的RC地址格式(如"R12C4")转换为常规地址格式(如"D12")。核心在于​​将列号数字转换为字母序列​​(类似26进制转换),行号直接保留。转换规则如下:

  1. ​列号转换​​:数字列号需转换为字母组合(1→A, 2→B, ..., 26→Z, 27→AA等)
  2. ​特殊规则​​:Excel列号从1开始(非0),当列号为26的倍数时需特殊处理(如26→Z, 52→AZ)
⚙️ 转换算法步骤
  1. ​解析输入​​:提取行号(R后数字)和列号(C后数字)
    • 示例:"R12C4" → 行号=12, 列号=4
  2. ​列号转字母​​:

    while 列号 > 0: 余数 = (列号 - 1) % 26 # 映射到0-25范围 当前字母 = chr(65 + 余数) # 65是'A'的ASCII 列号 = (列号 - 1) // 26 字母序列 = 当前字母 + 字母序列 # 逆序拼接

  3. ​组合结果​​:字母序列 + 行号字符串
🌰 关键案例验证
RC格式列号计算过程常规格式
R1C11→(0)%26→AA1
R5C255255→(254%26=20→U)→(9→I)→IUIU5
R255C2727→(26%26=0→A)→(1-1=0→A)→AAAA255
R100C100100→(99%26=21→V)→(3→C)→CVCV100
⚡ C++ 代码实现
#include <iostream>
#include <string>
using namespace std;int main() {int n;cin >> n;cin.ignore();  // 清除输入缓冲区for (int i = 0; i < n; i++) {string s;getline(cin, s);// 解析行号和列号size_t posC = s.find('C');string row_str = s.substr(1, posC - 1);int col = stoi(s.substr(posC + 1));// 列号转字母序列string col_letters = "";while (col > 0) {int r = (col - 1) % 26;col_letters = char('A' + r) + col_letters;col = (col - 1) / 26;}// 输出结果cout << col_letters << row_str << endl;}return 0;
}
⏱️ 性能与边界处理
  • ​时间复杂度​​:O(n×k),n≤100,k为列号转换循环次数(最大约log₂₆(16384)=3次)
  • ​边界案例​​:
    • 列号26 → Z(非A@
    • 列号52 → AZ(52-1=51 → 51%26=25→Z → 51/26=1 → 1-1=0→A → AZ

      6

  • ​输入处理​​:使用getline()避免空格干扰,stoi()自动处理数字前缀
http://www.xdnf.cn/news/10758.html

相关文章:

  • 【ISAQB大纲解读】Kafka消息总线被视为“自下而上设计”?
  • 基于PostGIS的GeoTools执行原生SQL查询制图实践-以贵州省行政区划及地级市驻地为例
  • Python Pytest
  • 接口自动化测试之pytest接口关联框架封装
  • Server2003 B-1 Windows操作系统渗透
  • React从基础入门到高级实战:React 高级主题 - React设计模式:提升代码架构的艺术
  • 无人机避障——感知部分(Ubuntu 20.04 复现Vins Fusion跑数据集)胎教级教程
  • XCTF-web-ics-05
  • 生成模型+两种机器学习范式
  • 使用大模型预测亚急性脊髓联合变性的技术方案大纲
  • react native webview加载本地HTML,解决iOS无法加载成功问题
  • 计算机网络通信技术与协议(八)----关于IS-IS的基础概念
  • HALCON 深度学习训练 3D 图像的几种方式优缺点
  • SpringBoot 系列之集成 RabbitMQ 实现高效流量控制
  • 使用Process Explorer、System Informer(Process Hacker)和Windbg工具排查软件高CPU占用问题
  • 基于51单片机和8X8点阵屏、独立按键的填充消除类小游戏
  • h5的aliplayer-min.js 加密视频会走到debugger
  • 计算A图片所有颜色占B图片红色区域的百分比
  • 第7章 :面向对象
  • 华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
  • 交叉验证集(Cross-Validation Set)和测试集(Test Set)
  • Delphi SetFileSecurity 设置安全描述符
  • 二叉树day1
  • C++和C#界面开发方式的全面对比
  • 初始化已有项目仓库,推送远程(Git)
  • git clone报错:SSL certificate problem: unable to get local issuer certificate
  • 用户管理页面(解决toggleRowSelection在dialog用不了的隐患,包含el-table的plus版本的组件)
  • Java程序员视角- NIO 到 Epoll:深度解析 IO 多路复用原理及 Select/Poll/Epoll 对
  • 立志成为一名优秀测试开发工程师(第十一天)—Postman动态参数/变量、文件上传、断言策略、批量执行及CSV/JSON数据驱动测试
  • 5.3.1_1二叉树的先中后序遍历