Aizu Online Judge(AOJ)の過去問から、C++による提出コードの解答例です。
Introduction to Programming IよりTopic # 8のAからDまでの計4問です。
https://onlinejudge.u-aizu.ac.jp/courses/lesson/2/ITP1/8
Topic # 8 "Character"
・ITP1_8_A : Toggling Cases
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_8_A
・ITP1_8_B : Sum of Numbers
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_8_B
・ITP1_8_C : Counting Characters
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_8_C
・ITP1_8_D : Ring
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_8_D
僕が作成、提出したコードは、以下のとおりです。
・ITP1_8_A : Toggling Cases
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_8_A
/* ITP1_8_A : Toggling Cases https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_8_A 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ string s; getline(cin,s); locale l=locale::classic(); for(int i=0;i<s.size();i++){ if(isupper(s[i])){ cout<<tolower(s[i],l); }else if(islower(s[i])){ cout<<toupper(s[i],l); }else{ cout<<s[i]; } } cout<<endl; return 0; }
・ITP1_8_B : Sum of Numbers
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_8_B
/* ITP1_8_B : Sum of Numbers https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_8_B 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ vector<string> x; while(1){ string i; cin>>i; if(i=="0"){ break; } x.push_back(i); } for(int i=0;i<x.size();i++){ int sum=0; for(int j=0;j<x[i].size();j++){ sum+=(x[i].at(j)-48); } cout<<sum<<endl; } return 0; }
・ITP1_8_C : Counting Characters
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_8_C
/* ITP1_8_C : Counting Characters https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_8_C 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ vector<string> s; while(1){ string str; cin>>str; if(cin.eof()){ break; } transform(str.begin(),str.end(),str.begin(),::tolower); s.push_back(str); } vector<int> ans(26,0); for(int i=0;i<s.size();i++){ for(int j=0;j<26;j++){ char c=(char)j+97; for(int k=0;k<s[i].size();k++){ if(s[i].at(k)==c){ ans[j]++; } } } } for(int i=0;i<26;i++){ char c=(char)i+97; cout<<c<<" : "<<ans[i]<<endl; } return 0; }
・ITP1_8_D : Ring
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_8_D
/* ITP1_8_D : Ring https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_8_D 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; namespace mine{ std::string to_string(char c){ return std::string(1,c); } } int main(void){ string s,p; cin>>s>>p; int m=(int)s.size(); int n=(int)p.size(); for(int i=0;i<m;i++){ string str=""; if(n>m-i){ for(int j=i;j<m;j++){ str+=mine::to_string(s[j]); } for(int j=0;j<n-m+i;j++){ str+=mine::to_string(s[j]); } }else{ for(int j=i;j<i+n;j++){ str+=mine::to_string(s[j]); } } if(p==str){ cout<<"Yes"<<endl; return 0; } } cout<<"No"<<endl; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/