比赛 |
NOIP2008集训模拟5 |
评测结果 |
EEEEEEEEEE |
题目名称 |
连续素数和 |
最终得分 |
0 |
用户昵称 |
zhai |
运行时间 |
0.000 s |
代码语言 |
Pascal |
内存使用 |
0.00 MiB |
提交时间 |
2008-11-14 09:50:10 |
显示代码纯文本
program conprime;
const
max=10000;
type
sz=array[1..2,1..max]of integer;
sx=array[0..1300]of integer;
sy=array[1..max]of integer;
var
f1,f2:text;
i,n,maxn:integer;
a:sx;
b:sz;
c:sy;
procedure ini;
var
i,x:integer;
f:boolean;
begin
assign(f1,'conprime.in.in');reset(f1);
assign(f2,'conprime.in.out');rewrite(f2);
fillchar(a,sizeof(a),0);
fillchar(b,sizeof(b),0);
fillchar(c,sizeof(c),0);
i:=0;
f:=false;
maxn:=0;
repeat
readln(f1,x);
if x=0 then f:=true
else begin
if x>maxn then maxn:=x;
inc(i);
b[1,i]:=x;
c[x]:=i;
end;
until f;
n:=i;
close(f1);
end;
procedure jian;
var
j,i,x:integer;
f:boolean;
begin
a[1]:=2;
a[2]:=3;
a[3]:=5;
i:=3;
j:=7;
while j<=maxn do begin
x:=2;f:=true;
while f and(x<=trunc(sqrt(j)))do
if j mod x=0 then f:=false
else inc(x);
if f then begin
inc(i);
a[i]:=j;
end;
j:=j+2;
end;
a[0]:=i;
end;
procedure zhao(x:integer;var d:boolean);
var
h,t,k:integer;
begin
h:=1;
t:=a[0];
d:=false;
while h<>t do begin
k:=(h+t)div 2;
if x>a[k] then h:=k+1
else t:=k;
end;
if x=a[h] then d:=true;
end;
procedure main;
var
i,j,k:integer;
d:boolean;
begin
for i:=1 to a[0]-1 do begin
k:=a[i];
j:=i+1;
while k<=maxn do begin
inc(k,a[j]);
if c[k]<>0 then inc(b[2,c[k]]);
inc(j);
end;
end;
for i:=1 to n do begin
zhao(b[1,i],d);
if d then inc(b[2,i]);
end;
end;
begin
ini;
jian;
main;
for i:=1 to n do writeln(f2,b[2,i]);
close(f2);
end.