fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. using int64 = long long;
  7.  
  8. int64 fast_pow(int64 base, int64 esp, int64 modd) {
  9. if (esp == 0) return 1;
  10. if (esp == 1) return base % modd;
  11. int64 meta = fast_pow(base, esp / 2, modd);
  12. if (esp % 2 == 0) return (meta * meta) % modd;
  13. else return (meta * meta % modd * base) % modd;
  14. }
  15.  
  16. void decifra(int64 N, int64 d, int64 L, const vector<int64>& messaggio, vector<char>& plaintext) {
  17. plaintext.resize(L + 1);
  18. plaintext[L] = char(0);
  19. for (int64 i = 0; i < L; i++) {
  20. plaintext[i] = char(fast_pow(messaggio[i], d, N));
  21. cout << plaintext[i];
  22. }
  23. }
  24.  
  25. int main() {
  26. int64 N, d, L;
  27. cin >> N >> d >> L;
  28. vector<int64> messaggio(L);
  29. for (int64 i = 0; i < L; i++) {
  30. cin >> messaggio[i];
  31. }
  32. vector<char> plaintext;
  33. decifra(N, d, L, messaggio, plaintext);
  34. return 0;
  35. }
Success #stdin #stdout 0s 5280KB
stdin
391 3 3
295 123 129
stdout
abc