#include #include #include #include #include #include using namespace std; #define EPSILON (1e-12) #define EQ(x,y) (fabs((x) - (y)) < EPSILON) int p, q, a, n; int x[10]; int cnt; void test(int k){ double d = 0.0; for(int i=1; i<=k; i++){ d += ((double)1/(double)x[i]); } if(EQ((double)p/(double)q , d)){ // cout << n << ":" << x[1] << "," << x[2] << "," << x[3] << endl; cnt++; } } void recur(int k, int base){ if(k==n+1){ return; }else{ for(int i=x[k-1]; i * base <= a; i++){ x[k] = i; test(k); recur(k+1, base*i); } } } int main() { while(cin >> p >> q >> a >> n){ if(p == 0 && q == 0 && a == 0 && n == 0){ return 0; } x[0] = 1; cnt = 0; recur(1, 1); cout << cnt << endl; } return 0; }