【AOJ 1240】Unreliable Messages
問題
Unreliable Message | Aizu Online Judge
ソースコード
#include <iostream> #include <string> #include <algorithm> #include <cctype> using namespace std; #define rep(i,n) for(int i = 0 ; i < n ; i++) int main(){ int n; cin >> n; rep(i,n){ string messenger; string message; int len; cin >> messenger >> message; len = (int)message.length(); int mid = len/2; for(int j = messenger.length()-1; j >= 0 ; j--){ switch(messenger[j]){ case 'C': message = string(message.substr(1) + message[0]); break; case 'J': message = string(message[len-1] + message.substr(0,len-1)); break; case 'E': if(len%2 == 1) message = string(message.substr(mid+1,len) + message[mid] + message.substr(0, mid)); else message = string(message.substr(mid,len)+message.substr(0, mid)); break; case 'A': reverse(message.begin(), message.end()); break; case 'M': rep(k,len){ if(isdigit(message[k])){ int num = message[k]-'0'; message[k] = '0' + (num+1)%10; } } break; case 'P': rep(k,len){ if(isdigit(message[k])){ int num = message[k]-'0'; if(num==0) message[k]='9'; else message[k] = '0' + (num-1)%10; } } } } cout << message << endl; } }
問題文通りにゴリゴリ実装した。