| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
求解各路大神帮忙看下,讨论版的测试数据都过了- -拍点也都过了,但一交就WA#include <cstdio>
#include <cstring>
#include <iostream>
#define INF 0x7f7f7f7f
using namespace std;
const int rf = 46340;
int maxans,minans,minx,miny,maxx,maxy;
int i,j,ll,rr,x = 0,y = 0,z,temp;
int len,l,r;
bool v[1010000],flag;
int su[5000];
void db(){
memset(v,1,sizeof(v));
for (i = 2; i <= rf; i++){
if (v[i]){
su[++len] = i;
for (j = i+i; j <= rf; j+=i) v[j] = 0;
}
}
}
int main(){
db();
while (~scanf("%d%d",&l,&r)){
memset(v,1,sizeof(v));
minans = INF; maxans = -INF;
x = 0; y = 0;
if (l == 1) v[0] = 0;
for (i = 1; i <= len; i++){
ll = l/su[i]; rr = r/su[i];
for (j = l/su[i]; j <= r/su[i]; j++)
if (j > 1 && su[i]*j-l >= 0) v[su[i]*j-l] = 0;
}
for (i = l; i < r; i++){
if (v[i-l]){
y = i;
if (x > 0){
if (y-x > maxans){
maxans = y-x;
maxx = x; maxy = y;
}
if (y-x < minans){
minans = y-x;
minx = x; miny = y;
}
}
x = y;
}
}
if (v[r-l]){
if (x > 0){
if (r-x > maxans){
maxans = r - x;
maxx = x; maxy = r;
}
if (r-x < minans){
minx = x; miny = r;
}
}
}
if (maxans > 0)
printf("%d,%d are closest, %d,%d are most distant\n",minx,miny,maxx,maxy);
else
printf("There are no adjacent primes.\n");
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator