Advertisement
shek_shek

algebra_3

Mar 5th, 2015
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.07 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2.  
  3. #include <stdio.h>
  4. #include <stack>
  5. #include <math.h>
  6. #include <time.h>
  7. #include <iostream>
  8. #include <algorithm>
  9. #include <string>
  10. #include <set>
  11. #include <iomanip>
  12. #include <vector>
  13. #include <map>
  14. #include <cassert>
  15. #include <queue>
  16. #include <fstream>
  17.  
  18. using namespace std;
  19.  
  20. typedef long long li;
  21. typedef long double ld;
  22.  
  23. #define forn(i, n) for (int i = 0; i < int(n); ++i)
  24. #define pb push_back
  25. #define mp make_pair
  26. #define all(v) v.begin(),v.end()
  27. #define EPS 1e-9
  28. #define PI 3.1415926535897932384626433832795
  29.  
  30.  
  31.  
  32. int main() {
  33.     srand(time(NULL));
  34.     ifstream key_stream("key.txt");
  35.     ofstream key_stream_out("key_2.txt");
  36.     ifstream text_stream("text.txt");
  37.     freopen("output.txt", "w", stdout);
  38.     vector <char> alph;
  39.     forn(i, 26)
  40.         alph.push_back('a' + i);
  41.     forn(i, 10)
  42.         alph.push_back('0' + i);
  43.     random_shuffle(all(alph));
  44.     forn(i, alph.size())
  45.         key_stream_out << alph[i];
  46.     string temp[] = { "A", "D", "F", "G", "V", "X" };
  47.  
  48.     map <char, string> alph_to_pair;
  49.     forn(i, 6) {
  50.         forn(j, 6) {
  51.             alph_to_pair[alph[i * 6 + j]] = temp[i] + temp[j];
  52.         }
  53.     }
  54.  
  55.  
  56.     vector <int> registr;
  57.  
  58.  
  59.     string result = "";
  60.     int idx = 0;
  61.     while (!text_stream.eof()) {
  62.         string temp;
  63.         text_stream >> temp;
  64.         forn(i, temp.size()) {
  65.             if (temp[i] >= 'A' && temp[i] <= 'Z')
  66.                 temp[i] += 'a' - 'A', registr.push_back(idx);
  67.             result += alph_to_pair[temp[i]];
  68.             idx++;
  69.         }
  70.     }
  71.     vector <pair <char, int>> key;
  72.     string tek;
  73.     key_stream >> tek;
  74.     key_stream_out << endl;
  75.     key_stream_out << tek;
  76.     forn(i, tek.size())
  77.         key.push_back(mp(tek[i], i));
  78.     sort(all(key));
  79.  
  80.     forn(i, result.size() / key.size()) {
  81.         forn(j, key.size()) {
  82.             forn(k, key.size()) {
  83.                 int idxx = i * key.size() * key.size() + key[j].second + k * key.size();
  84.                 if (idxx < result.size())
  85.                     cout << result[idxx];
  86.             }
  87.         }
  88.     }
  89.  
  90.  
  91.     return 0;
  92. }
  93.  
  94. ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
  95.  
  96.  
  97. #define _CRT_SECURE_NO_WARNINGS
  98.  
  99. #include <stdio.h>
  100. #include <stack>
  101. #include <math.h>
  102. #include <time.h>
  103. #include <iostream>
  104. #include <algorithm>
  105. #include <string>
  106. #include <set>
  107. #include <iomanip>
  108. #include <vector>
  109. #include <map>
  110. #include <cassert>
  111. #include <queue>
  112. #include <fstream>
  113.  
  114. using namespace std;
  115.  
  116. typedef long long li;
  117. typedef long double ld;
  118.  
  119. #define forn(i, n) for (int i = 0; i < int(n); ++i)
  120. #define pb push_back
  121. #define mp make_pair
  122. #define all(v) v.begin(),v.end()
  123. #define EPS 1e-9
  124. #define PI 3.1415926535897932384626433832795
  125.  
  126.  
  127.  
  128. int main() {
  129.     srand(time(NULL));
  130.     ifstream key_stream("key_2.txt");
  131.     ifstream text_stream("output.txt");
  132.     ofstream text_stream_out("text_2.txt");
  133.  
  134.     string alph, temp_key;
  135.     key_stream >> alph >> temp_key;
  136.  
  137.     map <string, string> pair_to_alph;
  138.     string temp[] = { "A", "D", "F", "G", "V", "X" };
  139.     forn(i, 6) {
  140.         forn(j, 6) {
  141.             pair_to_alph[temp[i] + temp[j]] = alph[i * 6 + j];
  142.         }
  143.     }
  144.  
  145.  
  146.     string text;
  147.     while (!text_stream.eof())
  148.         text_stream >> text;
  149.  
  150.     vector <string> result(text.size());
  151.  
  152.     vector <pair <char, int>> key;
  153.     forn(i, temp_key.size())
  154.         key.push_back(mp(temp_key[i], i));
  155.     sort(all(key));
  156.  
  157.     int idxx = 0;
  158.     forn(i, result.size() / key.size()) {
  159.         forn(j, key.size()) {
  160.             forn(k, key.size()) {
  161.                 int idx = i * key.size() * key.size() + key[j].second + k * key.size();
  162.                 if (idx < result.size())
  163.                     result[idx] = text[idxx], idxx++;
  164.             }
  165.         }
  166.     }
  167.  
  168.     for (int i = 0; i < result.size(); i += 2)
  169.         text_stream_out << pair_to_alph[result[i] + result[i + 1]];
  170.  
  171.     return 0;
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement