2 条题解

  • 1
    @ 2023-7-11 9:50:57

    字符串的一道题

    # include <bits/stdc++.h>
    using namespace std;
    const char *Const=" ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    char s[101];
    void Solve1() {
        int i=0,j=0,num1=0,num2=0;
        int t[101];
        for(++i;isdigit(s[i]);++i)
            (num2*=10)+=s[i]-'0';
        for(++i;s[i];++i)
            (num1*=10)+=s[i]-'0';
        for(;num1;num1=num1/26-!(num1%26)) {
            if(num1%26)
                t[++j]=num1%26;
            else
                t[++j]=26;    //特判
        }
        for(;j;--j)
            putchar(Const[t[j]]);
        printf("%d\n",num2);
    }
    void Solve2() {
        int i=0,num1=0,num2=0;
        for(;isupper(s[i]);++i)
            (num2*=26)+=s[i]-'A'+1;
        for(;s[i];++i)
            (num1*=10)+=s[i]-'0';
        printf("R%dC%d\n",num1,num2);
    }
    int main() {
        int n;
        bool flag;
        for(scanf("%d",&n);n;--n) {
            scanf("%s",s);
            flag=0;
            for(int i=0;s[i]&&!flag;++i)
                if(i&&isdigit(s[i-1])&&isupper(s[i]))
                    flag=1;
            if(flag)
                Solve1();
            else
                Solve2();
        }
        return 0;
    }
    
    • 0
      @ 2023-1-17 9:35:11

      很简单易懂的题解。

      #include <iostream>
      #include <string>
      #include <cmath>
      #include <cctype>
      using namespace std;
      #define int long long
      int n,a,b,fna;
      string s,r,c;
      bool isrxcy(string s){
      	if(s.find("C")!=string::npos&&s.find("C")!=0&&isdigit(s[s.find("C")-1])){
      		return true;
      	}
      	return false;
      }
      int szi(string s){
      	int x=0;
      	for(int i=0;i<s.length();i++){
      		x*=10;
      		x+=s[i]-'0';
      	}
      	return x;
      }
      string izs(int x){
      	string s,s1;
      	while(x!=0){
      		char a[2]={'0'+x%10};
      		s1=a;
      		s.insert(0,s1);
      		x/=10;
      	}
      	return s;
      }
      string rxcytorx(string a,int b){
      	string s;
      	while(b!=0){
      		b--;
      		char ca[2]={char(b%26+'A')};
      		string bb=ca;
      		s.insert(0,bb);
      		b/=26;
      	}
      	return s+a;
      }
      string rxtorxcy(string a,int b){
      	int x=0;
      	for(int i=0;i<a.length();i++){
      		x*=26;
      		x+=a[i]-'A'+1;
      	}
      	return "R"+izs(b)+"C"+izs(x);
      }
      int findnumberaddress(){
      	for(int i=0;i<s.length();i++){
      		if(isdigit(s[i])){
      			return i;
      		}
      	}
      	return -1;
      }
      signed main(void){
      	cin>>n;
      	while(n--){
      		cin>>s;
      		if(isrxcy(s)){
      			r=s.substr(1,s.find("C")-1);
      			c=s.substr(s.find("C")+1,s.length()-1-s.find("C"));
      			b=szi(c);
      			r=rxcytorx(r,b);
      		}else{
      			fna=findnumberaddress();
      			r=s.substr(0,fna);
      			c=s.substr(fna,s.length()-r.length());
      			a=szi(c); 
      			r=rxtorxcy(r,a);
      		}
      		cout<<r<<endl;
      	}
      }
      
      • @ 2023-4-21 21:21:21

        《真简单》

    • 1

    信息

    ID
    7101
    时间
    10000ms
    内存
    64MiB
    难度
    5
    标签
    递交数
    40
    已通过
    12
    上传者