Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <string.h>
- #include <vector>
- #define print(var) ;//cout << #var << ": " << var<< endl;
- using namespace std;
- string decode(string inp, int base);
- string code(string inp, int base);
- void reverseString(string* str) {
- int length = str->length();
- for (int i = 0; i < (length / 2); i++) {
- char tmp = str->at(i);
- str->at(i) = str->at(length - 1 - i);
- str->at(length - 1 - i) = tmp;
- }
- }
- int main() {
- int tests;
- cin >> tests;
- cin.ignore();
- while (tests--) {
- int base;
- int op;
- string inp;
- getline(cin, inp);
- base = (inp.at(0) - '0');
- op = (inp.at(2) - '0');
- inp.erase(0, 4);
- print(base);
- print(op);
- print(inp);
- if (op) {
- cout << decode(inp, base) << ":\n";
- }
- else {
- cout << code(inp, base) << ":\n";
- }
- }
- }
- string decode(string inp, int base) {
- int toBase = inp.length() % base;
- if (toBase) {
- for (int i = 0; i < base - toBase; i++) {
- inp += " ";
- }
- }
- int loops = inp.length() / base;
- string dcode;
- string result;
- for (int i = 0; i < loops; i++) {
- dcode = inp.substr(0, base);
- inp.erase(0, base);
- reverseString(&dcode);
- result += dcode;
- }
- while (result.find_last_of(' ') == result.length() - 1) {
- result.erase(result.find_last_of(' '));
- }
- return result;
- }
- string code(string inp, int base) {
- int toBase = inp.length() % base;
- if (toBase) {
- for (int i = 0; i < base - toBase; i++) {
- inp += " ";
- }
- }
- int loops = inp.length() / base;
- string code;
- string result;
- for (int i = 0; i < loops; i++) {
- code = inp.substr(0, base);
- inp.erase(0, base);
- reverseString(&code);
- result += code;
- }
- return result;
- }
- /*
- 5
- 5 0 abcdefghijklmnopqrstuvwxyz
- 5 1 edcbajihgfonmlktsrqpyxwvu z
- 2 0 jereme
- 2 1 ejerem
- 5 1 a
- 2
- 5 1 edcbajihgfonmlktsrqpyxwvu z
- 2 1 ejerem
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement