CF1B Spreadsheets
Posted Driver_Lao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF1B Spreadsheets相关的知识,希望对你有一定的参考价值。
【题解】
模拟就行,类似进制转换
1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define N 200010 5 #define rg register 6 using namespace std; 7 int n,m,l1,l2,pos,a[N],top; 8 char s[N],s1[N]; 9 inline int read(){ 10 int k=0; char c=getchar(); 11 while(c<\'0\'||c>\'9\')c=getchar(); 12 while(\'0\'<=c&&c<=\'9\')k=k*10+c-\'0\',c=getchar(); 13 return k; 14 } 15 inline void work(bool type){ 16 if(type==0){ 17 putchar(\'R\'); 18 for(rg int i=pos;i<=n;i++) putchar(s[i]); 19 putchar(\'C\'); 20 int tmp=0; 21 for(rg int i=1;i<pos;i++) tmp=tmp*26+s[i]-\'A\'+1; 22 printf("%d\\n",tmp); 23 } 24 else{ 25 int pos2=pos; 26 while(s[pos2]>=\'0\'&&s[pos2]<=\'9\') pos2++; pos2++; 27 int t1=0,t2=0; 28 for(rg int i=pos2;i<=n;i++)t1=t1*10+s[i]-\'0\'; 29 top=0; 30 while(t1){ 31 a[++top]=t1%26; 32 t1/=26; 33 } 34 for(rg int i=1;i<=top-1;i++) if(a[i]<=0)a[i+1]--,a[i]+=26; 35 while(a[top]<=0) top--; 36 for(rg int i=top;i;i--) printf("%c",(char)(a[i]+\'A\'-1)); 37 for(rg int i=pos;i<pos2-1;i++) putchar(s[i]); 38 puts(""); 39 } 40 } 41 int main(){ 42 m=read(); 43 while(m--){ 44 scanf("%s",s+1); 45 n=strlen(s+1); 46 pos=1; bool type=0; 47 while(s[pos]>=\'A\'&&s[pos]<=\'Z\')pos++; 48 for(rg int i=pos;i<=n;i++) if(s[i]>=\'A\'&&s[i]<=\'Z\'){ 49 type=1; break; 50 } 51 work(type); 52 } 53 return 0; 54 }
以上是关于CF1B Spreadsheets的主要内容,如果未能解决你的问题,请参考以下文章
在 Google Drive 中使用 Google Spreadsheets API 创建电子表格
VLOOKUP包含Google Spreadsheets中的每两个比较参数?