Submit Status Practice UVA 10200 uDebug
Description
这题因为答案是浮点数,要在最后加一个极小值来调整答案
#include <iostream> #include <cstring> #include <cstdio> #include <cmath> #include <algorithm> using namespace std; const int N = 10100; int prime(int x); int dp[N]; int main() { memset(dp,0,sizeof(dp)); dp[0]=1; for(int i=1;i<N;i++) { if(prime(i)) { dp[i]=dp[i-1]+1; } else { dp[i]=dp[i-1]; } } int a, b; while(scanf("%d %d", &a, &b)!=EOF) { if(a>b) { swap(a,b); } double m; if(a==0) { m=dp[b]-dp[a]+1; } else { m=dp[b]-dp[a-1]; } double n=(m*1.00)/((b-a+1)*1.00); printf("%.2f\n",n*100+1e-8); } return 0; } int prime(int x) { x=x*x+x+41; int k=sqrt(x); for(int i=2;i<=k+1;i++) { if(x%i==0) { return 0; } } return 1; }