fork(1) download
  1. #include <iostream>
  2. #include <cstdio>
  3.  
  4. int const N = 1024;
  5. int buff[N], last;
  6.  
  7. void g(int &last) {
  8. if (buff[last - 1] == 0) {
  9. buff[last - 1] = buff[last] + 1;
  10. last--;
  11. } else if (buff[last] == 0) {
  12. buff[last - 1] = buff[last - 1] - 1;
  13. buff[last] = 1;
  14. } else {
  15. int m = buff[last - 1];
  16. int n = buff[last];
  17. buff[last - 1] = m - 1;
  18. buff[last] = m;
  19. buff[last + 1] = n - 1;
  20. last++;
  21. }
  22. int k = 0;
  23. for (int i = 0; i <= last; i++) {
  24. if (i < last) {
  25. std::cout << "A(";
  26. std::cout << buff[i] << ",";
  27. k++;
  28. } else {
  29. std::cout << buff[i];
  30. for (int j = 0; j < k; j++)
  31. std::cout << ")";
  32. }
  33. }
  34. std::cout << std::endl;
  35. }
  36.  
  37. int f(int m, int n) {
  38. buff[0] = m;
  39. buff[1] = n;
  40. last = 1;
  41. for (;;) {
  42. g(last);
  43. if (last == 0) return buff[0];
  44. }
  45. }
  46.  
  47. int main() {
  48. int m, n;
  49. if (fscanf(stdin, "%d %d", &m, &n) == 2)
  50. f(m, n);
  51. return 0;
  52. }
  53. /* end */
  54.  
Success #stdin #stdout 0s 4348KB
stdin
2 1
stdout
A(1,A(2,0))
A(1,A(1,1))
A(1,A(0,A(1,0)))
A(1,A(0,A(0,1)))
A(1,A(0,2))
A(1,3)
A(0,A(1,2))
A(0,A(0,A(1,1)))
A(0,A(0,A(0,A(1,0))))
A(0,A(0,A(0,A(0,1))))
A(0,A(0,A(0,2)))
A(0,A(0,3))
A(0,4)
5