栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 2613 Choose and divide

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 2613 Choose and divide

#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using namespace std;const int MAX=10000;int pri[MAX+5];int mark[MAX+5];int cnt;int p1[MAX+5],p2[MAX+5],p3[MAX+5],p4[MAX+5],x1[MAX+5],x2[MAX+5];void Prime(){    int i,j;    cnt=0;    for(i=0;i<MAX;i++)        mark[i]=i;    for(i=2;i<MAX;i++)    {        if(mark[i]==i) pri[cnt++]=i;        for(j=0;j<cnt&&pri[j]*i<MAX;j++)        { mark[i*pri[j]]=pri[j]; if(i%pri[j]==0)     break;        }    }}void solve(int x,int y,int p[]){    int i,j,n;    for(i=x;i<=y;i++)    {        n=i;        for(j=0;j<cnt;j++)        { if(n%pri[j]==0) {     while(n%pri[j]==0)     {         p[pri[j]]++;         n=n/pri[j];     } } if(n==1)     break;        }    }}int main(){    Prime();    int p,q,r,s,i,j;    while(scanf("%d%d%d%d",&p,&q,&r,&s)!=EOF)    {        q=min(p-q,q);        s=min(r-s,s);        memset(p1,0,sizeof(p1));        memset(p2,0,sizeof(p2));        memset(p3,0,sizeof(p3));        memset(p4,0,sizeof(p4));        solve(p-q+1,p,p1);        solve(1,s,p2);        solve(1,q,p3);        solve(r-s+1,r,p4);        for(i=0;i<MAX;i++)        { x1[i]=p1[i]+p2[i]; x2[i]=p3[i]+p4[i];        }        double ans=1.0;        for(i=0;i<MAX;i++)        { if(x1[i]>x2[i]) {     for(j=1;j<=x1[i]-x2[i];j++)         ans=ans*i; } else {     for(j=1;j<=x2[i]-x1[i];j++)     {         ans=ans/i;     } }        }        printf("%.5lfn",ans);    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/375070.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号