#include <iostream> #include <cstdio> int const N = 1024; int buff[N], last; void g(int &last) { if (buff[last - 1] == 0) { buff[last - 1] = buff[last] + 1; last--; } else if (buff[last] == 0) { buff[last - 1] = buff[last - 1] - 1; buff[last] = 1; } else { int m = buff[last - 1]; int n = buff[last]; buff[last - 1] = m - 1; buff[last] = m; buff[last + 1] = n - 1; last++; } int k = 0; for (int i = 0; i <= last; i++) { if (i < last) { std::cout << "A("; std::cout << buff[i] << ","; k++; } else { std::cout << buff[i]; for (int j = 0; j < k; j++) std::cout << ")"; } } std::cout << std::endl; } int f(int m, int n) { buff[0] = m; buff[1] = n; last = 1; for (;;) { g(last); if (last == 0) return buff[0]; } } int main() { int m, n; if (fscanf(stdin, "%d %d", &m, &n) == 2) f(m, n); return 0; } /* end */
2 1
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