【题解】codeforces 1B Spreadsheets
题意翻译
人们常用的电子表格软件(比如: Excel)采用如下所述的坐标系统:
第一列被标为A,第二列为B,以此类推,第26列为Z。接下来为由两个字母构成的列号: 第27列为AA,第28列为AB…在标为ZZ的列之后则由三个字母构成列号,如此类推。
行号为从1开始的整数。
单元格的坐标由列号和行号连接而成。比如,BC23表示位于第55列23行的单元格。
有时也会采用被称为RXCY的坐标系统,其中X与Y为整数,坐标(X,Y)直接描述了对应单元格的位置。比如,R23C55即为前面所述的单元格。
您的任务是编写一个程序,将所给的单元格坐标转换为另一种坐标系统下面的形式。
输入
第一行一个整数n(1<=n<=10^5),表示将会输入的坐标的数量。
接下来n行,每行一个坐标。
注意: 每个坐标都是正确的。此外不会出现行号或列号大于10^6的单元格。
输出
n行,每行一个被转换的坐标。
题目描述
In the popular spreadsheets systems (for example, in Excel) the following numeration of columns is used. The first column has number A, the second — number B, etc. till column 26 that is marked by Z. Then there are two-letter numbers: column 27 has number AA, 28 — AB, column 52 is marked by AZ. After ZZ there follow three-letter numbers, etc.
The rows are marked by integer numbers starting with 1. The cell name is the concatenation of the column and the row numbers. For example, BC23 is the name for the cell that is in column 55, row 23.
Sometimes another numeration system is used: RXCY, where X and Y are integer numbers, showing the column and the row numbers respectfully. For instance, R23C55 is the cell from the previous example.
Your task is to write a program that reads the given sequence of cell coordinates and produce each item written according to the rules of another numeration system.
输入输出格式
输入格式:
The first line of the input contains integer number n n n ( 1<=n<=105 1<=n<=10^{5} 1<=n<=105 ), the number of coordinates in the test. Then there follow n n n lines, each of them contains coordinates. All the coordinates are correct, there are no cells with the column and/or the row numbers larger than 106 10^{6} 106 .
输出格式:
Write n n n lines, each line should contain a cell coordinates in the other numeration system.
输入输出样例
输入样例#1: 复制
2
R23C55
BC23
输出样例#1: 复制
BC23
R23C55
思路
题目给出了两种行列位置的表示方法,一个是Excel表示法,一个是(R,C)坐标表示法,我们要做的就是将输入的一种表示转换成另一种表示再输出。
可以通过26进制(字母)与10进制(数字)互相转换解决问题
#include<cmath>
#include<cctype>
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#define re register int
using namespace std;
inline int read(){
int x=0,w=1;
char ch=getchar();
while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();
if(ch=='-') w=-1,ch=getchar();
while(ch>='0'&&ch<='9') x=(x<<1)+(x<<3)+ch-48,ch=getchar();
return x*w;
}
const char *Const=" ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char s[101]; inline void Solve1() {
int i=0,j=0,num1=0,num2=0;
int t[101];
for(++i;isdigit(s[i]);++i) num2=num2*10+s[i]-'0';
for(++i;s[i];++i) num1=num1*10+s[i]-'0';
for(;num1;num1=num1/26-!(num1%26)) {
if(num1%26) t[++j]=num1%26;
else t[++j]=26;
}
for(;j;--j) putchar(Const[t[j]]);
printf("%d\n",num2);
} inline void Solve2() {
int i=0,num1=0,num2=0;
for(;isupper(s[i]);++i) (num2*=26)+=s[i]-'A'+1;
for(;s[i];++i) (num1*=10)+=s[i]-'0';
printf("R%dC%d\n",num1,num2);
} int main() {
//freopen("1b.in","r",stdin);
//freopen("1b.out","w",stdout);
int n;
bool flag;
n=read();
for(re i=1;i<=n;++i) {
scanf("%s",s);
flag=0;
for(int i=0;s[i]&&!flag;++i) if(i&&isdigit(s[i-1])&&isupper(s[i])) flag=1; //若字母前出现数字,一定是(R,C)法
if(flag) Solve1();
else Solve2();
}
return 0;
}
【题解】codeforces 1B Spreadsheets的更多相关文章
- codeforces 1B Spreadsheets
In the popular spreadsheets systems (for example, in Excel) the following numeration of columns is u ...
- CodeForces 1B Spreadsheets (字符串处理,注意细节,大胆尝试)
题目 注意模后余数为0时,要把除以26后的新数据减1,为什么这样,要靠大胆尝试.我在对小比赛中坑了一下午啊,直到比赛结束也没写出这道题....要死了.. #include<stdio.h> ...
- CodeForces 1B 模拟题。
H - 8 Time Limit:10000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- 【Codeforces 1B】Spreadsheets
[链接] 我是链接,点我呀:) [题意] A~Z分别对应了1~26 AA是27依次类推 让你完成双向的转换 [题解] 转换方法说实话特别恶心>_< int转string 得像数位DP一样一 ...
- [题解] Codeforces Round #549 (Div. 2) B. Nirvana
Codeforces Round #549 (Div. 2) B. Nirvana [题目描述] B. Nirvana time limit per test1 second memory limit ...
- 题解——CodeForces 438D The Child and Sequence
题面 D. The Child and Sequence time limit per test 4 seconds memory limit per test 256 megabytes input ...
- codeforces 1B 模拟
题目大意: 给出两种行列位置的表示方法,一个是Excel表示法,一个是(R,C)坐标表示.给出一种表示,输出另外一种表示. 基本思路: 模拟,首先判断是哪一种表示法,然后转换成另外一种表示方法: 我做 ...
- [题解][Codeforces]Good Bye 2019 简要题解
构造题好评,虽然这把崩了 原题解 A 题意 二人游戏,一个人有 \(k_1\) 张牌,另一个人 \(k_2\) 张,满足 \(2\le k_1+k_2=n\le 100\),每张牌上有一个数,保证所有 ...
- [题解][Codeforces]Codeforces Round #602 (Div. 1) 简要题解
orz djq_cpp lgm A 题意 给定一个分别含有 \(\frac n2\) 个左括号和右括号的括号序列 每次可以将序列的一个区间翻转 求一个不超过 \(n\) 次的操作方案,使得操作完之后的 ...
随机推荐
- 基于蒙特卡洛树搜索(MCTS)的多维可加性指标的异常根因定位
摘要:本文是我在从事AIOps研发工作中做的基于MCTS的多维可加性指标的异常根因定位方案,方案基于清华大学AIOPs实验室提出的Hotspot算法,在此基础上做了适当的修改. 1 概述 ...
- 【死磕JVM】用Arthas排查JVM内存 真爽!我从小用到大
Arthas是啥 当我们系统遇到JVM或者内存溢出等问题的时候,如何对我们的程序进行有效的监控和排查,就发现了几个比较常用的工具,比如JDK自带的 jconsole.jvisualvm还有一个最好用的 ...
- iNeuOS工业互联平台,WEB组态(iNeuView)增加动态图元,例如液位
目 录 1. 概述... 2 2. 平台演示... 2 3. 应用过程... 2 4. 实现动态图元的效果... 3 1. 概述 最近,有潜在用 ...
- Spark大数据处理框架入门(单机版)
导读 引言 环境准备 安装步骤 1.下载地址 2.开始下载 3.解压spark 4.配置环境变量 5.配置 spark-env.sh 6.启动spark服务 7.测试spark stay hungry ...
- Envoy:主动健康监测
实验文件 docker-compose version: '3' services: envoy: image: envoyproxy/envoy-alpine:v1.15-latest enviro ...
- 如何对你的Linux系统进行基准测试: 3开源基准测试工具
如何对你的Linux系统进行基准测试: 3开源基准测试工具 0 赞0 评论 文章标签:SYS Source benchmark tool 开源 基准 系统 linux实用程序的 ...
- 攻防世界(四)php_rce
攻防世界系列:php_rce 1.打开题目 看到这个还是很懵的,点开任意连接都是真实的场景. 2.ThinkPHP5,这里我们需要知道它存在 远程代码执行的漏洞. ?s=index/\think\ap ...
- ltp 测试流程及测试脚本分析
LTP介绍 (2011-03-25 18:03:53) 转载▼ 标签: ltp linux 压力测试 杂谈 分类: linux测试 LTP介绍 一.LTP介绍1.简介LTP(Linux Test Pr ...
- Linux进阶之使用Oh-My-Zsh打造炫酷终端
Oh My Zsh是基于zsh命令行的一个扩展工具集,提供了丰富的扩展功能.除了功能增强之外,还提供非常丰富的主题.使用Oh-My-Zsh打造酷炫Shell终端的步骤(Deepin系统): 原始终端: ...
- power delivery功率输出
delivery