2 条题解
-
1
字符串的一道题
# 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
很简单易懂的题解。
#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; } }
- 1
信息
- ID
- 7101
- 时间
- 10000ms
- 内存
- 64MiB
- 难度
- 5
- 标签
- 递交数
- 40
- 已通过
- 12
- 上传者