poj 1980 Unit Fraction Partition 深搜剪枝

来源:互联网 发布:finale打谱软件注册码 编辑:程序博客网 时间:2024/06/07 10:22
#include <iostream>using namespace std;int p,q,a,n,ans;int gcd(int x,int y){return x%y==0?y:gcd(y,x%y);}int lcm(int x,int y){return x/gcd(x,y)*y;}void dfs(int cur,int pre,int up,int down,int product){for(int i=pre;i*product<=a;++i){int k=lcm(down,i);int t1=k/down*up;int t2=k/q*p;if(t2>t1+k/i*(n-cur+1))return ;if(t2==t1+k/i)++ans;else if(t2>t1+k/i&&cur<n)dfs(cur+1,i,t1+k/i,k,product*i);}}int main(){while(scanf("%d%d%d%d",&p,&q,&a,&n)==4){if(p==0&&q==0&&a==0&&n==0)break;ans=0;dfs(1,1,0,q,1);printf("%d\n",ans);}return 0;} 

0 0
原创粉丝点击