测试结果1: 通过本测试点|有效耗时172:ms
测试结果2: 通过本测试点|有效耗时47:ms
测试结果3: 测试结果错误.
错误结果为:80062991
正确结果应为:43729691
测试结果4: 通过本测试点|有效耗时47:ms
测试结果5: 测试结果错误.
错误结果为:13563783707049367381
正确结果应为:1618030885559322623
求3、5的数据
不介意的话帮我分析下程序漏洞。
(很垃圾的算法)
var
q:array[1..120] of integer;
sum:qword;
m,n,i,i1,i2,i3,i4,i5,j,link:word;
a:integer;
b:boolean;
begin
read(m,n);
case m of
1:
begin
for i1:=1 to n do
begin
b:=true;
for j:=2 to trunc(sqrt(i1)) do
if (i1 mod j=0) then begin b:=false;break;end;
if b then begin inc(link);q[link]:=i1; end
else b:=true;
end;
sum:=1;
for i:=1 to link do
sum:=sum*q[link];
if sum=1 then sum:=0;
writeln(sum);
end;
2:
begin
for i1:=1 to n do
for i2:=1 to n do
if i1<>i2 then
begin
b:=true;a:=i1*10+i2;
for j:=2 to trunc(sqrt(a)) do
if (a mod j=0) then begin b:=false;break;end;
if b then begin inc(link);q[link]:=a; end
else b:=true;
end;
sum:=1;
for i:=1 to link do
sum:=sum*q[i];
if sum=1 then sum:=0;
writeln(sum);
end;
3:
begin
for i1:=1 to n do
for i2:=1 to n do
for i3:=1 to n do
if (i1<>i2)and(i2<>i3)and(i1<>i3) then
begin
b:=true;a:=i1*100+i2*10+i3;
for j:=2 to trunc(sqrt(a)) do
if (a mod j=0) then begin b:=false;break;end;
if b then begin inc(link);q[link]:=a; end
else b:=true;
end;
sum:=1;
for i:=1 to link do
sum:=sum*q[link];
if sum=1 then sum:=0;
writeln(sum);
end;
4:
begin
for i1:=1 to n do
for i2:=1 to n do
for i3:=1 to n do
for i4:=1 to n do
if (i1<>i2)and(i2<>i3)and(i1<>i3)and(i1<>i4)and(i2<>i4)and(i3<>i4) then
begin
b:=true;a:=i1*1000+i2*100+i3*10+i4;
for j:=2 to trunc(sqrt(a)) do
if (a mod j=0) then begin b:=false;break;end;
if b then begin inc(link);q[link]:=a; end
else b:=true;
end;
sum:=1;
for i:=1 to link do
sum:=sum*q[link];
if sum=1 then sum:=0;
writeln(sum);
end;
5:
begin
for i1:=1 to n do
for i2:=1 to n do
for i3:=1 to n do
for i4:=1 to n do
for i5:=1 to n do
if (i1<>i2)and(i2<>i3)and(i1<>i3)and(i1<>i4)and(i2<>i4)and(i3<>i4)
and(i1<>i5)and(i2<>i5)and(i3<>i5)and(i4<>i5)then
begin
b:=true;a:=i1*10000+i2*1000+i3*100+i4*10+i5;
for j:=2 to trunc(sqrt(a)) do
if (a mod j=0) then begin b:=false;break;end;
if b then begin inc(link);q[link]:=a; end
else b:=true;
end;
sum:=1;
for i:=1 to link do
sum:=sum*q[link];
if sum=1 then sum:=0;
writeln(sum);
end;
end;
end.