96 条题解
-
0YY_0227 LV 8 @ 2009-10-20 21:49:15
无聊的编了个递归AC了。
[url=http://blog.163.com/yy\_0227\_2009/] -
02009-09-23 20:36:28@
我太扯淡了
program p1359;
const sm:array[1..6] of integer=(1,2,3,5,7,9);
var i,j,k,l,m,n:longint;
function sushu(x:longint):boolean;
var g,t:longint;
begin if x=1 then exit(false);
if (x=2)or(x=3)then exit(true);
for g:=2 to round(sqrt(x)) do
if x mod g=0 then exit(false);
exit(true);
end;
procedure dfs(x:longint);
var g,t,s:longint;
begin
if x div k>0 then begin writeln(x);exit;end;
x:=x*10;
for g:=1 to 6 do
if sushu(x+sm[g]) then dfs(x+sm[g]);
end;
begin
readln(n); k:=1;
for i:=1 to n-1 do k:=k*10;
dfs(0);
end.交了两遍。。一开始把5丢了
-
02009-09-13 20:07:16@
每次确定一位,若为质数,则往后加...一直加到K位.
Const
zs:array[1..6]of char=('1','2','3','5','7','9');Var
i,j,k,p:longint;
st:string;Function Tox(s:string):boolean;
var
i,z:longint;
begin
val(s,z);
if z=1
then exit(false);
for i:=2 to trunc(sqrt(z)) do
if z mod i=0
then exit(false);
exit(true);
end;Procedure Fox(x:longint);
var
t:longint;
begin
for t:=1 to 6 do
begin
st[x]:=zs[t];
if Tox(copy(st,1,x))and(x=k) 为什么?
then writeln(st);
if Tox(copy(st,1,x))and(x -
02009-09-12 17:49:40@
这题连十组数据都凑不齐
还真可悲不过也很好了
-
02009-08-21 12:15:30@
var n:longint;
s:string;
function zs(k:longint):boolean;
var j:longint;
begin
zs:=true;
if k=1 then begin zs:=false; exit; end;
for j:=2 to round(sqrt(k)) do
if k mod j =0 then
begin
zs:=false;
exit;
end;
end;
procedure find(m:integer);
var i,x,t,p:longint;
begin
if m>n then begin writeln(s); exit; end;
for i:=1 to 9 do
begin
t:=0;
p:=1;
for x:=m-1 downto 1 do
begin
p:=p*10;
t:=(ord(s[x])-48)*p+t;
end;
t:=t+i;
if zs(t) then
begin
insert(chr(i+48),s,m);
find(m+1);
delete(s,m,1);
end;
end;
end;
begin
readln(n);
find(1);
end. -
02009-08-18 18:06:10@
USACO .. DFS ..
Program ex;
const
a:array[1..4] of integer = (1,3,7,9) ;
var
r:integer;Function prime(x:longint):boolean;
var
i:longint;
begin
for i := 2 to trunc(sqrt(x)) do
if x mod i = 0 then exit(false) ;
exit(true) ;
end;Procedure DFS(x,d:longint);
var
i:integer;
o:longint;
begin
if d = r then
begin
writeln(x) ;
exit;
end;
for i := 1 to 4 do
begin
o := x * 10 + a[i] ;
if prime(o) then DFS(o,d+1) ;
end;
end;BEGIN
read(r) ;
DFS(2,1) ;
DFS(3,1) ;
DFS(5,1) ;
DFS(7,1) ;
END. -
02009-08-11 20:57:55@
数据咋这么小……直接枚举了,啥剪枝都懒得想,AC了……枚举第一个AC的……
-
02009-08-07 21:04:52@
1100次提交,裸搜也瞬秒.
我是沙茶!!! -
02009-08-07 16:37:43@
水题......
以2,3,5,7为第一位
如果当前这一个数为素数就再在后面添加1,3,7,9
直接秒杀... -
02009-08-05 13:37:17@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms向大牛看齐 努力不打表..
秒杀了这道题目以后
才发现我写麻烦了思想:首先生成符合这种类型的数
比如
n=1
2 3 5 7n=2的时候
那么 我们就根据规律补上一根肋骨(即在后面添上一个数)
21 23 25 27 29 判断素数(删去21 25 27) 23 29
31 33 35 37 39 判断素数(删去33 35 39) 31 37
.............
就这样不断补到n位至于为什么我写繁了....(我太笨了 或者因为是这道题目太水了)
判断素数 此题太水了 所以可以直接穷举 1-sqrt(n) 来判断
而我用了miller rabin算法来判断....(真是没事找事!!) -
02009-08-04 21:27:30@
简单。。
刚学信息学的时候就发明了一种枚举秒杀的超具体方法。。。
//HINT 我那时全部人只有我一个秒杀。。。
每次冲第一位找到一个非素数的,然后增加这一位。。
这样能够去掉很多不必要的计算,尤其是位数比较多的时候。。。。
(我想数据有QWORD那么大也可以过了吧。。)
虽然还可以优化,但是已经足够秒杀了。。
很纳闷为什么这题这么少人过,我想我是不是天才啦~~~(天生蠢材^_^)
虽然程序有点丑,还是晒一下吧。。。======================晒程序======================
var
n,i,n1,j,m:longint;
function check(i:longint):boolean;
var
j:longint;
begin
if i=1 then exit(false);
for j:=2 to trunc(sqrt(i)) do
if i mod j=0 then exit(false);
exit(true);
end;begin
readln(n);
i:=1;
for j:=1 to n-1 do i:=i*10;
n1:=i*10;
while i -
02009-08-02 21:54:56@
var
n,i2:longint;
st:string;
function pd(x:longint):boolean;
var
k:longint;
begin
pd:=true;
for k:=2 to trunc(sqrt(x)) do
if x mod k=0 then begin pd:=false;exit;end;
end;procedure dfs(s:string;l:longint);
var
i,j,x,shu:longint;
s2:string;
begin
val(s,x);
if l=n then
begin if pd(x) then
begin writeln(s);exit;end
else exit;end;
inc(l);
for i:=1 to 9 do
if (i=1)or(i=3)or(i=7)or(i=9)then
begin
s2:=s+chr(i+48);
val(s2,shu);
if pd(shu) then
dfs(s2,l);
end;
end;begin
readln(n);
for i2:=1 to 9 do
if (i2=2)or(i2=3)or(i2=5)or(i2=7)then
begin
str(i2,st);
dfs(st,1);
end;
end.
(剪枝:由条件可推:数的最高位只能取:2,3,5,7;其余各位只能取:1,3,7,9. 60%多的剪枝秒杀) -
02009-08-02 12:09:46@
usaco1.5的经典水题...
-
02009-08-01 16:55:30@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms不打表照样秒杀……
-
02009-07-31 21:27:13@
打表才是真英雄~~
-
02009-07-28 17:49:36@
思路很简单~
Program P1359;
var i,n:longint;function check(t:longint):boolean;
var i:longint;
begin
check:=true;
if t=1 then exit(false);
if t=2 then exit(true);
for i:=2 to trunc(sqrt(t)) do
if t mod i=0 then exit(false);
end;procedure search(t,l:longint);
var i,j:longint;
begin
if l=n then begin writeln(t); exit; end;
if l=0 then search(2,1);
for i:=0 to 4 do
if check(t*10+i*2+1) then search(t*10+i*2+1,l+1);
end;Begin
readln(n);
search(0,0);
readln;
end. -
02009-07-26 17:33:07@
dfs直接秒杀,想他那么复杂……
-
02009-07-25 19:26:47@
差点淹死……(这也要打表……)
-
02009-07-22 20:18:51@
典型的打表题,n最大才8.
-
02009-06-28 22:00:51@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms不用交表,一次AC