#include<iostream>
using namespace std;
struct F{
	int n,d;
	F(int n,int d):n(n),d(d){}
};
F operator-(const F &a,const F &b){
	int rn=a.n*b.d-b.n*a.d,rd=a.d*b.d,g;
	return F(rn,rd);
}
int p,q,a,n;
int rec(int cp,int cq,int cd,int ca,int cn){
	int r=0;
	for(int nd=cd;nd*ca<=a;nd++)if(cp*nd>=cq&&cn!=n){
		if(cp*nd==cq)r++;
		else{
			F nF=F(cp,cq)-F(1,nd);
			r+=rec(nF.n,nF.d,nd,nd*ca,cn+1);
		}
	}
	return r;
}
int main(){
	while(cin>>p>>q>>a>>n,p)cout<<rec(p,q,1,1,0)<<endl;
	return 0;
}