#include<bits/stdc++.h> using namespace std; const int maxn = 10000 + 5; int e[maxn],vis[maxn]; vector<int> primes; void add_primes() { memset(vis,0,sizeof(vis)); int m = sqrt(10000+0.5); for(int i=2;i<=m;i++) if(!vis[i]) for(int j=i*i;j<=10000;j+=i) vis[j] = 1; for(int i=2;i<=10000;i++) if(!vis[i]) primes.push_back(i); } void add_integer(int n,int d) { for(int i=0;i<primes.size();i++) { while(n%primes[i]==0) { n/=primes[i]; e[i]+=d; } if(n==1) break; } } void add_factorial(int n,int d) { for(int i=1;i<=n;i++) add_integer(i,d); } int main() { int p,q,r,s; add_primes(); while(cin>>p>>q>>r>>s) { memset(e,0,sizeof(e)); add_factorial(p,1) ; add_factorial(q,-1) ; add_factorial(p-q,-1) ; add_factorial(r,-1) ; add_factorial(s,1) ; add_factorial(r-s,1) ; double ans=1; for(int i=0;i<primes.size();i++) ans*=pow(primes[i],e[i]); printf("%.5lf\n",ans); } return 0; }
时间: 2024-10-25 16:17:24