Codeforces 1B - Spreadsheet
来源:互联网 发布:金手指代码转换软件 编辑:程序博客网 时间:2024/04/23 23:25
这道题AC的不容易啊,唉,小错误频出,查看测试数据好多才改过来的。
首先注意的是两种类型属于哪一种的判断,利用第一个字符R和第二个字符是数字,还有后面存在字符C,这三个条件来判断。
然后注意的就是把就散出来的列号c值转化成AA等字母类型的时候,我找到一个规律,可以利用取余和除法来进行,
比如704代表AAB,以下为转换过程:
704%26=2-->B;
704/26=27;
27%26=1->A;
27/26=1;
1%26=1->A;
1/26=0;
此时c=0,结束循环
然后利用栈,倒着来输出。
注意到如果涉及到Z,就有点不同了。
如果余0,代表Z,然后令c--才是正确结果,
比如702代表ZZ,转换过程如下:
702%26=0-->Z;
704/26=27;
27--;
26%26=0->Z;
26/26=1;
1--;
此时c=0,结束循环
#include <iostream>#include <string>#include <cstring>#include <stack>#include <stdio.h>#include <stdlib.h>using namespace std;bool kind_RxCx(char*ch,int len){if(ch[0]=='R'&&ch[1]>='0'&&ch[1]<='9')for(int i=0;i<len;i++)if(ch[i]=='C') return 1;return 0;}int main(){ int n; cin>>n; getchar(); char ch[20]; while(n--){ gets(ch); int len=strlen(ch); int r=0,c=0; if(kind_RxCx(ch,len)){ //from R23C55 to BC23 char row[10],col[10]; memset(row,0,sizeof(row)); memset(col,0,sizeof(col)); int row_num=0,col_num=0; int i; //把row的值复制到row数组 for(i=1;i<len;i++){ if(ch[i]>='0'&&ch[i]<='9'){ row[row_num]=ch[i]; row_num++; } else break; } //把col的值复制到col数组 for(;i<len;i++){ if(ch[i]>='0'&&ch[i]<='9'){ col[col_num]=ch[i]; col_num++; } } r=atoi(row); c=atoi(col); //把c的字母表示计算出来 stack<char> sc; while(c){ char temp=c%26+'A'-1; if(temp=='A'-1)//即 c%26=0 temp='Z'; sc.push(temp); c/=26; if(temp=='Z') c--; } while(!sc.empty()){ cout<<sc.top(); sc.pop(); } cout<<r<<endl; } else{ //from BC23 to R23C55 char row[10]; memset(row,0,sizeof(row)); int row_num=0; int j; //把row的值复制到row数组 for(j=0;j<len;j++){ if(ch[j]>='0'&&ch[j]<='9'){ row[row_num]=ch[j]; row_num++; } } //把col的值计算出来 int flag=0;//位数 for(j=len-1;j>=0;j--){ if(ch[j]>='A'&&ch[j]<='Z'){ int add=ch[j]-'A'+1; for(int k=0;k<flag;k++) add*=26; flag++; c+=add; } } r=atoi(row); cout<<"R"<<r<<"C"<<c<<endl; } } return 0;}
- Codeforces 1B - Spreadsheet
- CodeForces 1B Spreadsheet
- Codeforces 1B Spreadsheet
- CodeForces 1B-Spreadsheet
- 【CodeForces】[1B]Spreadsheet
- Codeforces Beta Round #1 B Spreadsheet
- CF 1B Spreadsheet
- coderforce 1B-Spreadsheet
- CF 1B Spreadsheet
- (codeforces)C. Alyona and Spreadsheet
- CODEFORCES:1B. Spreadsheets
- CodeForces 1B Spreadsheets
- CodeForces - 1B Spreadsheets
- Codeforces 1B. Spreadsheets
- codeforces-1B. Spreadsheets
- CodeForces 1B Spreadsheets
- CodeForces#1B Spreadsheets
- Codeforces #1 B. Spreadsheets
- HTML代码格式化 HTML Tidy Notepad++
- Objective-C 宏
- Oracle 11g R2安装手册 For Win7 (图文教程)
- 黑马程序员------html一些简单的用法之二
- java聊天室 提交预版 登录框(通)
- Codeforces 1B - Spreadsheet
- android版本下载以及切换
- java聊天室 提交预版 注册框
- 2012@Cognizant
- 标准Linux文件系统层次标准(Filesystem Hierarchy Standard)根文件系统篇
- java聊天室 提交预版 登录框
- python-Day1- raw_input
- Android FrameWork——Touch事件派发过程详解
- 设计模式 之 单例模式