uva10200 Prime Time

来源:互联网 发布:睡眠对皮肤的好处知乎 编辑:程序博客网 时间:2024/05/07 06:07

刚开始想到素数筛选来标记每一个素数,后来发现10000*10000是1亿,数组开不了这么大;然后发现数据只有10000,完全可以一个一个的判断数据,很快的写了一遍,果断超时,于是就先打表了一下,又提交,wa!改了下精度,然后A了;

#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#define N 10010#define INF 999999999using namespace std;int prime(int n){    if(n==1||n==0)        return 0;    int k,i;    k=sqrt(n);    for(i=2;i<=k;i++)    {        if(n%i==0)            return 0;    }    return 1;}int main(){    int a1,b,i,n,sum;    int a[N];    int count=0;    for(i=0;i<=10000;i++)//先打表    {        n=i*i+i+41;        if(prime(n))            count++;        a[i]=count;    }    while(~scanf("%d%d",&a1,&b))    {        if(a1==0)//a1等于0时候a1-1会越界,所以特判一下;            sum=a[b]-a[a1]+1;        else            sum=a[b]-a[a1-1];        printf("%.2f\n",1e-6+100.0*sum/(b-a1+1));//注意要加个1e-6,不加会精度错误wa }    return 0;}


0 0
原创粉丝点击