zoukankan      html  css  js  c++  java
  • uva10200(Prime Time) 卡精度

    分析:题目给出一个公式f(n)=n*n+n+41,输入a和b,0<=a<=b<=10000,

    问在区间[a,b]中满足f(k)是素数的数所占的百分比。

    b的范围不大,直接暴力素数打表即可。

    最后输出保留两位小数,卡精度,必须在结果加上1e-5(或者更小)保证精度。

    例如,输入 6000 9999,不加1e-5输出37.67(真实值为37.675),加上1e-5输出37.68。

    #include<cstdio>
    bool a[100010042];
    void f()
    {
        for(int i=4;i<100010042;i+=2) a[i]=1;
        for(int i=3;i<100010042;i++)
        {
            if(a[i]==0)
            {
                for(int j=i+i;j<100010042;j+=i)
                a[j]=1;
            }
        }
    }
    int ans[10011];
    int main()
    {
        f();ans[0]=1;
        for(int i=1;i<10001;i++)
        {
            if(!a[i*i+i+41])
            ans[i]=1;
            ans[i]+=ans[i-1];
        }
        int a,b;
        while(scanf("%d%d",&a,&b)!=-1)
        if(a==0)
            printf("%.2lf
    ",100*(double)ans[b]/((b+1)*1.0)+1e-5);
        else 
            printf("%.2lf
    ",100.0*(1.0*(ans[b]-ans[a-1]))/(1.0*(b-a+1))+1e-5);
        return 0;
    }
    View Code
  • 相关阅读:
    信息探测
    Hdu 1262 寻找素数对
    Hdu 1263 水果
    Hdu 1261字串数
    Hdu 1253 胜利大逃亡
    Hdu 1237简单计算器
    Hdu 1235 统计同成绩学生人数
    Hdu 1236 排名
    Hdu 1233 还是畅通工程
    Hdu 1234 开门人和关门人
  • 原文地址:https://www.cnblogs.com/ACRykl/p/8626865.html
Copyright © 2011-2022 走看看