/* Sun Jul 4 02:59:18 JST 2004 */ /* Sun Jul 4 03:36:56 JST 2004 */ #include int count; void rec(int seq[7], int len, int c, int p, int q, int x, int y, int a, int n) { int i, pi; pi = 1; for (i = 0; i < len; i++) { pi *= seq[i]; if (pi > a) { return; } } if (p * y == q * x) { count++; return; } if (p * y < q * x) { return; } if (len >= n) { return; } for (i = c; ; i++) { if (p * y * i > q * (x * i + (n - len) * y)) { break; } seq[len] = i; rec(seq, len+1, i, p, q, x * i + y, y * i, a, n); } } int main() { int p, q, a, n, seq[7]; while (1) { scanf("%d%d%d%d", &p, &q, &a, &n); if (!p && !q && !a && !n) { break; } count = 0; rec(seq, 0, 1, p, q, 0, 1, a, n); printf("%d\n", count); } return 0; }