原 oj网址点击打开链接
vj网址点击打开链接
这道题本身真心不难 但是有点坑 真心坑 我一开始还以为题都错了 题的大意 就是给你一个区间 问你在区间中的数字 i 的i*i+i+41 是素数的比例 这个 本身 感觉 哇 菜题 可后来 我wa到 怀疑人生 最后我才知道 这个题 其实 要卡 精度 但是为啥 加一个 1e-6 就 ac》???? 有问题 刚刚问了学长 主要还是 有误差 比如 10/3 = 0.3333333333 一般这种题都要 +eps来卡精度 这种题 就是卡精度的题 到比赛 看不出来 就只能一个一个试 博主现在也是一脸懵逼~~~~~~
include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<string>
#include<math.h>
using namespace std;
const int m=10100*10100;
int a,b;
double eps=1e-6;
bool prem[m+10];
int main()
{
int k=sqrt(m);
for(int i=2; i<k; i++)
{
if(!prem[i])
{
for(int j=i*i; j<m; j+=i)
{
prem[j]=1;
}
}
}
int sum=0;
while(~scanf("%d%d",&a,&b))
{
// printf("%d\n",prem[1681]);
sum=0;
for(int i=a;i<=b;i++)
{
if(!prem[i*i+i+41])
{ // printf("%d\n",i);
sum++;
}
}
printf("%.2f\n",(sum*1.0)*100.0/(b*1.0-a*1.0+1)+eps);
}
return 0;
}