zoukankan      html  css  js  c++  java
  • CodeForces 1B Spreadsheets (字符串处理,注意细节,大胆尝试)

    题目

    注意模后余数为0时,要把除以26后的新数据减1,为什么这样,要靠大胆尝试。我在对小比赛中坑了一下午啊,直到比赛结束也没写出这道题。。。。要死了。。

    #include<stdio.h>
    #include<string.h>
    
    
    int main()
    {
        int n,i,j,row,col,len;
        char str[20],ans[20];
        scanf("%d",&n);
        while(n--)
        {
            memset(ans,0,sizeof(ans));
            scanf("%s",str);
            len=strlen(str);
            
            int er=0,yi=0;
            
            if(str[1]>='0'&&str[1]<='9')
            {
                yi=1;
                for(i=1;i<len;i++)
                {
                    if(!(str[i]>='0'&&str[i]<='9'))
                    {
                        er=1;
                        break;
                    }
                }
                if(er==1){
                    er=1;
                    row=col=0;
                    for(i=1;;i++)
                    {
                        if(!(str[i]>='0'&&str[i]<='9'))break;
                        row=row*10+(str[i]-'0');
                    }
                    for(i++;i<len;i++)
                    {
                        col=col*10+(str[i]-'0');
                    }
                    int temp,k=0;
                    while(col)
                    {
                        temp=col%26;
                        
                        col=col/26;
                        if(temp==0) ans[k++]='Z',col--;
                        else ans[k++]='A'+temp-1;
                    }
                    ans[k]='';
                    int kk=k/2;
                    char cc;
                    for(int ii=0;ii<kk;ii++)
                    {
                        cc=ans[ii];
                        ans[ii]=ans[k-ii-1];
                        ans[k-ii-1]=cc;
                    }
                    printf("%s%d
    ",ans,row);
                }
            }
            if(er==0||yi==0)
            {
                row=col=0;
                for(i=0;i<len;i++)
                {
                    if(str[i]>='0'&&str[i]<='9')break;
                }
                j=i-1;
                for(;i<len;i++)
                {
                    row=row*10+(str[i]-'0');
                }
                int jin=1;
                for(i=j;i>=0;i--)
                {
                    col=col+jin*(str[i]-'A'+1);
                    jin=jin*26;
                }
                printf("R%dC%d
    ",row,col);
            }
        }
        return 0;
    }
    View Code
    一道又一道,好高兴!
  • 相关阅读:
    Windows Live Writer Testing
    基于本地文件系统的LocalDB
    【笔记】动画显示窗体
    winform无边框窗口拖动
    关于js的内存机制
    flex-basis
    Cookie、session和localStorage、以及sessionStorage之间的区别
    关于报文
    关于http与https Tcp的三次握手四次握手
    关于前后端分离与不分离
  • 原文地址:https://www.cnblogs.com/laiba2004/p/3677076.html
Copyright © 2011-2022 走看看