B. Spreadsheets

来源:互联网 发布:知豆汽车是哪家公司的 编辑:程序博客网 时间:2024/05/17 22:05

#include<iostream>#include<cstdio>using namespace std;int main(){    string a;    string b,c;    int i,j;    int num1;    int num0;    int nu;    scanf("%d",&nu);    int flag=0;    for(int ii=0; ii<nu; ii++)    {        int step=0;        int n=1;        flag=0;        num0=num1=0;        cin>>a;        int ii=0;        while(a[ii]>='A'&&a[ii]<='Z') ++ii;        for(int g=ii;g<a.size();g++)         if(a[g]=='C')          {              flag=1;break;          }        if(flag==0)        {            int st=0;            while(a[st]>='A'&&a[st]<='Z') ++st;            for(i=st-1; i>=0; i--)            {                num0+=(a[i]-'A'+1)*n;                n*=26;            }            for(i=st; i<a.size(); i++)            {                num1=num1*10+a[i]-'0';            }            printf("R%dC%d\n",num1,num0);        }        else        {            for(i=1; a[i]!='C'; i++)            {                num0=num0*10+a[i]-'0';            }            for(j=i+1; j<a.size(); j++)            {                num1=num1*10+a[j]-'0';            }         //   printf("%d %d\n",num0,num1);            if(num1<=26)//有一个字母            {                printf("%c%d\n",num1+'A'-1,num0);            }            else if(num1<=702)//有两个字母            {                int aa=num1%26;                if(aa==0)                {                    aa=26;                }                num1-=aa;                printf("%c%c%d\n",num1/26+'A'-1,aa+'A'-1,num0);            }            else if(num1<=18278)//有三个字母            {                //1 26 676 17576 456976 11881376                int aa=num1%26;                if(aa==0)                    aa=26;                num1=num1-aa;                int bb=num1%676;                if(bb==0)                    bb=676;                num1=(num1-bb)/676;                bb/=26;              //  printf("aa=%d bb=%c num1=%d\n",aa,bb+'A'-1,num1);                printf("%c%c%c%d\n",num1+'A'-1,bb+'A'-1,aa+'A'-1,num0);            }            else if(num1<=475254)//四位字母            {                int aa=num1%26;                if(aa==0)                    aa=26;                num1=num1-aa;                int bb=num1%676;                if(bb==0)                    bb=676;                num1=num1-bb;                bb/=26;                int cc=num1%17576;                if(cc==0)                  cc=17576;                num1-=cc;                cc/=676;                num1/=17576;                printf("%c%c%c%c%d\n",num1+'A'-1,cc+'A'-1,bb+'A'-1,aa+'A'-1,num0);            }            else            {                int aa=num1%26;                if(aa==0)                    aa=26;                num1=num1-aa;                int bb=num1%676;                if(bb==0)                    bb=676;                num1=num1-bb;                bb/=26;                int cc=num1%17576;                if(cc==0)                  cc=17576;                num1-=cc;                cc/=676;                int dd=num1%456976;                if(dd==0)                  dd=456976;                num1-=dd;                  dd/=17576;                num1/= 456976;               // printf("%d %d %d %d %d %d\n",num1,dd,cc,bb,aa,num0);               printf("%c%c%c%c%c%d\n",num1+'A'-1,dd+'A'-1,cc+'A'-1,bb+'A'-1,aa+'A'-1,num0);            }        }    }    return 0;}//1 26 676 17576 456976 11881376/*t1=26;t2=728;t3=19682;t4=531440;t5=14348906;1000R621C406ABD815R3C24R634C162R695C621R875C898AHG626AFE664R95C969R21C933R629C648R253C417WQ20AGA989XO484R912C396R292C168PI999TR254PH609R207C905R762C995LL946R292C805R174C206NY237R345C125R657C212OP621R815C732X3FF634WW695AHN875//R626C891R664C837AKG95//AIW21//XX629PA253R20C615R989C859R484C639OF912FL292R999C425R254C538R609C424AHU207//ALG762//R946C324ADY292GX174R237C389DU345HD657R185C831R81C54R448C215...*/


原创粉丝点击