这次题目不难,就是最后一道题感觉表述不大清楚,对一个名字中数字的处理讲的不是很清楚,所以不做了。。
这次所有题交之前都没进行测试。。错了好多次。。
第一题,水题。
Ac代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int maxn=100010; int a[maxn]; int main(){ int n,first=1; while(cin>>n){ memset(a,0,sizeof(a)); int first2=1; for(int i=0;i<n;i++) cin>>a[i]; sort(a,a+n); if(first) first=0; else cout<<endl; for(int i=0;i<n/2;i++){ if(first2) first2=0; else cout<<" "; if(i!=n-1-i) cout<<a[i]<<" "<<a[n-1-i]; else break; } if(n%2==1){ if(first2) first2=0; else cout<<" "; cout<<a[n/2]; } cout<<endl; } return 0; }
|
第二题,还是水题。
Ac代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int maxn=100010; int a[maxn]; int main(){ int n,first=1; while(cin>>n){ int cnt1=0,cnt2=0; memset(a,0,sizeof(a)); int first2=1; for(int i=0;i<n;i++) cin>>a[i]; sort(a,a+n); if(first) first=0; else cout<<endl; if(n%2==1){ for(int i=0;cnt1<n/2+1;i+=2){ if(first2) first2=0; else cout<<" "; cout<<a[i]; cnt1++; } for(int i=1;cnt2<n/2;i+=2){ if(first2) first2=0; else cout<<" "; cout<<a[n-1-i]; cnt2++; } cout<<endl; } else{ for(int i=0;cnt1<n/2;i+=2){ if(first2) first2=0; else cout<<" "; cout<<a[i]; cnt1++; } for(int i=1;cnt2<n/2;i+=2){ if(first2) first2=0; else cout<<" "; cout<<a[n-i]; cnt2++; } cout<<endl; } } return 0; }
|
第三题,还是水题。
Ac代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #include<iostream> #include<sstream> #include<string> #include<vector> #include<algorithm> using namespace std; vector<unsigned long long>a; int main(){ string s; while(cin>>s){ for(int i=0;i<(int)s.length();i++) if(s[i]=='5') s[i]=' '; stringstream ss(s); unsigned long long x; while(ss>>x) a.push_back(x); sort(a.begin(),a.end()); int first=1; for(int i=0;i<(int)a.size();i++){ if(first) first=0; else cout<<" "; cout<<a[i]; } cout<<endl; a.clear(); } return 0; }
|
第四题,单元格调整,一开始在A和Z的处理上出现了问题。。卡了挺久的。。
Ac代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| #include<iostream> #include<string> #include<sstream> using namespace std; void a_to_b(string s){ string a,b; int c=0; for(int i=0;i<s.length();i++) if(!isdigit(s[i])) a+=s[i]; else b+=s[i]; for(int i=0;i<a.length();i++){ c*=26; c+=a[i]-'A'+1; } cout<<"R"<<b<<"C"<<c<<endl; } void b_to_a(string s){ stringstream ss(s); int a,b,k[6],t[6]; for(int i=0;i<6;i++){ t[i]=0; int j=5-i; k[i]=1; while(j--) k[i]*=26; } string c; ss.get(); ss>>a; ss.get(); ss>>b; for(int i=0;b>0;i++){ t[i]=b/k[i]; b-=t[i]*k[i]; } for(int i=5;i>=0;i--){ int cnt=0; for(int j=i-1;j>=0;j--) if(t[j]>0) cnt++; if(t[i]<=0&&cnt){ t[i]+=26; t[i-1]--; } } for(int i=0;i<6;i++) if(t[i]>0) c+='A'-1+t[i]; cout<<c<<a<<endl; } int main(){ string s; int n; cin>>n; cin.get(); while(n--){ getline(cin,s); int t=0; for(int i=1;i<s.size();i++) if(isalpha(s[i-1])&&isdigit(s[i])) t++; if(t==1) a_to_b(s); else b_to_a(s); } return 0; }
|
** 本文迁移自我的CSDN博客,格式可能有所偏差。 **