CODEFORCES 1B Spreadsheets

Posted reactord

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CODEFORCES 1B Spreadsheets相关的知识,希望对你有一定的参考价值。

技术分享图片

技术分享图片

一,题目大意:一个坐标有两种表示方法,一种是RXCy,表示第几行,第几列。另一种是字母加数字,例如BC34(表示55列34行,A表第1列,Z表第26列,AA表第27列)

       现给出n(1?≤?n?≤?10^5)个坐标的一种表示方法,求出它的另一种表示方法。

       PS:横/纵坐标的数字不超过10^6。

二,题目分析:当给出RxCy时,

       行数直接转就行了,难点在列数上。

       1.先将字符串转化成数字。

       2.再进制转换(但要注意26进制却没有0,这就需要额外特判(这想了我好久))

        {

          (1)进制转换用短除法。

          (2)需要判断几位数。

          (3)如果%的时候余0,须从下一次%出来的数上借一位。

        }

三,

技术分享图片
 1 #include <stdio.h>
 2 #include <string.h>
 3 int col,row;
 4 int sum[10];
 5 char str[15];
 6 int pd(int x)
 7 {
 8     int i=1;
 9     while(x>sum[i])i++;
10     return i;
11 }
12 void calc()
13 {
14     int i=1;
15     col=row=0;
16     while(str[i]>=A&&str[i]<=Z)col=(col<<4)+(col<<3)+(col<<1)+str[i++]-64;
17     while(str[i]>=0&&str[i]<=9)row=(row<<3)+(row<<1)+str[i++]-0;
18     printf("R%dC%d
",row,col);
19 }
20 int main()
21 {
22     int n,len,i,j,k;
23     sum[1]=26;
24     for(i=2;i<=5;i++)sum[i]=(sum[i-1]+1)*26;
25     char pstr[15];
26     scanf("%d
",&n);
27     while(n--)
28     {
29         memset(str,0,sizeof(str));
30         memset(pstr,0,sizeof(pstr));
31         scanf("%s",str+1);
32         if(str[1]==R)
33         {
34             j=2;row=0;
35             while(str[j]>=0&&str[j]<=9)
36             {
37                 row=(row<<1)+(row<<3)+str[j]-0;
38                 j++;
39             }
40             if(str[j]==C&&(j++)>2)
41             {
42                 col=0;
43                 while(str[j]>=0&&str[j]<=9)col=(col<<1)+(col<<3)+str[j++]-0;
44                 len=pd(col);
45                 while(len)
46                 {
47                     k=col%26;
48                     col/=26;
49                     if(k==0)col-=1,k+=26;
50                     pstr[len--]=k+64;
51                 }
52                 printf("%s%d
",pstr+1,row);
53             }
54             else calc();
55         }
56         else calc();
57     }
58     return 0;
59 }
View Code

 

以上是关于CODEFORCES 1B Spreadsheets的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces 1B Spreadsheets

CodeForces 1B-字符串,进制转换与数学

CODEFORCES 1B Spreadsheets

spreadsheet控件怎么连接wincc数据库

使用Spreadsheet导出表格时,设置样式

B - Spreadsheets CodeForces - 1B