资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 面试经验 > 面试问答

poj 2613 Choose and divide

面试问答 更新时间: 发布时间: 计算机考试归档 最新发布

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;}
转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/375070.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【poj 2613 Choose and divide】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2