// 2020-05-26 Ackermann's 3-input phi function #include unsigned long long phi(unsigned long long m, unsigned long long n, unsigned long long p) { if (p == 0) return m + n; if (n == 0 && p == 1) return 0; if (n == 0 && p == 2) return 1; if (n == 0) return m; return phi(m, phi(m, n-1, p), p-1); } int main() { unsigned long long m, n, p; int run = 1; int ret = 0; while (run) { fputs("m, n, p? > ", stdout); ret = scanf(" %llu %llu %llu", &m, &n, &p); if ((m == 0 && n == 0 && p == 0) || ret != 3) { run = 0; } else { printf("\u03C6(m, n, p) = %llu\n\n", phi(m, n, p)); } } return 0; }