Advertisement
Guest User

Untitled

a guest
Nov 27th, 2014
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. bool f;
  8. int t, n, cur, sz;
  9. unsigned long long a, b, tmp, stp;
  10. string str, r, s, ans;
  11. char ch;
  12.  
  13. void fib() {
  14. tmp = a + b;
  15. a = b;
  16. b = tmp;
  17. }
  18.  
  19. int main() {
  20. cin >> t;
  21. while (t-- && cin >> n) {
  22. cin.ignore();
  23. getline(cin, str);
  24.  
  25. a = 0, b = 1; cur = -1;
  26. ans = "";
  27. sz = str.size() - 1;
  28. f = true;
  29.  
  30. s = string(str.begin() + 1, str.end());
  31. r = str;
  32. reverse(r.begin(), r.end());
  33. r = string(r.begin() + 1, r.end());
  34.  
  35. while (n) {
  36. fib();
  37. stp = b - a;
  38. if (!stp) stp = 1;
  39. cur += stp;
  40. if (cur >= (f ? sz + 1 : sz)) {
  41. if (f) {
  42. f = false;
  43. cur--;
  44. }
  45. tmp = cur / sz;
  46. cur %= sz;
  47. if (tmp % 2)
  48. ch = r[cur];
  49. else
  50. ch = s[cur];
  51. }
  52. if (ch != '-') {
  53. ans += ch;
  54. n--;
  55. }
  56. else
  57. a = 0, b = 1;
  58. }
  59. cout << ans << endl;
  60. }
  61. return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement