题目
一个自然数是素数,且它的数字位置经过任意对换后仍为素数,则称为绝对素数,例如13.
请找出所有x位的绝对素数的数量.
输入x(x<=5)
输入样例:
1
输出样例:
4
请找出所有x位的绝对素数的数量.
输入x(x<=5)
输入样例:
1
输出样例:
4
提问时间:2021-01-17
答案
var
a,k,i,w,sum,x:longint;
s:array[1..8363]of longint;
e:array[1..8363]of boolean;
st:string;
b:array[1..5]of char;
flag:array[0..9]of boolean;
c:array[1..120]of string;
procedure search(depth:integer);
var i,t:integer;
begin
if(depth>a) then
begin
inc(x);
for i:=1 to a do c[x]:=c[x]+b[i];
exit;
end;
for i:=1 to a do
if flag[i]=false then
begin
b[depth]:=st[i];
flag[i]:=true;
search(depth+1);
flag[i]:=false;
end;
end;
function erfen(o:string):boolean;
var
m,head,tail,j:longint;
begin
val(o,m);
head:=1;
tail:=w;
j:=trunc((head+tail)/2);
repeat
if s[j]=m then exit(false)
else
if s[j]>m then
begin tail:=j-1; j:=trunc((head+tail)/2) end
else if s[j] begin head:=j+1; j:=trunc((head+tail)/2) end;
until (head>tail);
exit(true);
end;
procedure checks(w:longint);
var
i,j:longint;
begin
for i:=1 to w do
begin
str(s[i],st);
x:=0;
search(1);
for j:=1 to k do
if erfen(c[j]) then e[i]:=false;
for j:=1 to k do
c[j]:=';
end;
end;
function check(w:longint):boolean;
var
i:longint;
begin
for i:=2 to round(sqrt(w)) do
if w mod i =0 then exit(false);
exit(true);
end;
procedure trys(a:longint);
var
i,j,head,tail:longint;
begin
tail:=9;
head:=1;
w:=0;
for i:=1 to a-1 do
begin
head:=head*10;
tail:=tail*10+9;
end;
for i:=head to tail do
if check(i) then begin inc(w);s[w]:=i; end;
checks(w);
for i:=1 to w do
if e[i] then inc(sum);
write(sum);
end;
begin
k:=1;
fillchar(e,sizeof(e),true);
readln(a);
for i:=2 to a do
k:=k*i;
if a=1 then write(4)
else if a<5 then trys(a)
else if a=5 then write(0);
end.
a,k,i,w,sum,x:longint;
s:array[1..8363]of longint;
e:array[1..8363]of boolean;
st:string;
b:array[1..5]of char;
flag:array[0..9]of boolean;
c:array[1..120]of string;
procedure search(depth:integer);
var i,t:integer;
begin
if(depth>a) then
begin
inc(x);
for i:=1 to a do c[x]:=c[x]+b[i];
exit;
end;
for i:=1 to a do
if flag[i]=false then
begin
b[depth]:=st[i];
flag[i]:=true;
search(depth+1);
flag[i]:=false;
end;
end;
function erfen(o:string):boolean;
var
m,head,tail,j:longint;
begin
val(o,m);
head:=1;
tail:=w;
j:=trunc((head+tail)/2);
repeat
if s[j]=m then exit(false)
else
if s[j]>m then
begin tail:=j-1; j:=trunc((head+tail)/2) end
else if s[j]
until (head>tail);
exit(true);
end;
procedure checks(w:longint);
var
i,j:longint;
begin
for i:=1 to w do
begin
str(s[i],st);
x:=0;
search(1);
for j:=1 to k do
if erfen(c[j]) then e[i]:=false;
for j:=1 to k do
c[j]:=';
end;
end;
function check(w:longint):boolean;
var
i:longint;
begin
for i:=2 to round(sqrt(w)) do
if w mod i =0 then exit(false);
exit(true);
end;
procedure trys(a:longint);
var
i,j,head,tail:longint;
begin
tail:=9;
head:=1;
w:=0;
for i:=1 to a-1 do
begin
head:=head*10;
tail:=tail*10+9;
end;
for i:=head to tail do
if check(i) then begin inc(w);s[w]:=i; end;
checks(w);
for i:=1 to w do
if e[i] then inc(sum);
write(sum);
end;
begin
k:=1;
fillchar(e,sizeof(e),true);
readln(a);
for i:=2 to a do
k:=k*i;
if a=1 then write(4)
else if a<5 then trys(a)
else if a=5 then write(0);
end.
举一反三
已知函数f(x)=x,g(x)=alnx,a∈R.若曲线y=f(x)与曲线y=g(x)相交,且在交点处有相同的切线,求a的值和该切线方程.
我想写一篇关于奥巴马的演讲的文章,写哪一篇好呢?为什么好
奥巴马演讲不用看稿子.为什么中国领导演讲要看?
想找英语初三上学期的首字母填空练习……
英语翻译
最新试题
- 1We should work hard to change the situation"Made in China" into"____ in china" A.Discovered.B.Inve
- 21+7—4=6只移动一根火柴棍,这个算式才是正确的.怎样做呢?
- 3关于21世纪物理学前沿
- 4为什么动物不懂得遵守规则,它们也有思维,人类动的遵守,动物为什么不懂?
- 5一日等于多少分钟
- 6that,math,this,哪个th的发音不同
- 7如图,一牧童在A处牧马,牧童家在B处,A、B处距河岸的距离AC、BD的长
- 8设Sn是数列an的前n项和,点P(an,Sn)(n∈N+,n≥1)在直线y=2x-2上. (Ⅰ)求数列an的通项公式; (Ⅱ)记bn=2(1−1/an),数列bn的前n项和为Tn,求使Tn>2011的
- 9已知实数x,y满足(x-7)²=121,(y+1)³=-0.064,求式子√(x-2)-√(x+10y)+³√(245y)的值
- 10一个小孩沿水平方向推静止在水平面的小汽车,但车未动,则
热门考点
- 1the cake was made by me和 this is a cake which was made by me 意思有差别吗?
- 2理想气体方程 紧急
- 3英语翻译
- 4HF,NH3,H2O中含有氢键,那它们一定是各自族中氢化物的熔点最高的吗
- 5一捆钢丝长25.12米,在一个圆形线圈上绕了200圈,这个线圈的直径是多少?
- 6在比例尺是1:9000000的地图上量的广州到北京的距离是21.3厘米,一列火车以每小时70千米的速度在9月30日凌晨1点从广州开出,几月几日几时几分到达北京?
- 7带结晶水物质的化学式怎么写
- 8已知函数f(x),g(x)都是定义在R上的奇函数,F(x)=f(x)+g(x),且F(x)在区间(0,+∞)上是减函数
- 9long close
- 10先分解因式 再求值 (a+b/2)²-(a-b/2)² 其中a=-1/2 b=8