170 条题解
-
0xusc_2009 LV 9 @ 2009-07-30 19:58:51
555555555555
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
交了8次
就是朴素的搜嘛!!!!!!!!!!!!!
不可以再犯低级错误了 -
02009-07-28 08:38:46@
var
a:array[1..4] of longint;
dd:array[1..4] of boolean;
ch:char;
i:longint;
procedure input;
var s,st:string;
l,i:longint;
begin
readln(s);
s:=s+' ';
for i:=1 to 4 do
begin
l:=pos(' ',s);
st:=copy(s,1,l-1);
delete(s,1,l);
if l=3 then begin a[i]:=10; continue; end;
case st[1] of
'2'..'9':a[i]:=ord(st[1])-48;
'J':a[i]:=11;
'Q':a[i]:=12;
'K':a[i]:=13;
'A':a[i]:=1;
end;
end;
end;procedure dfs(t:longint;x:real);
var i:longint;
begin
if (t=5) then
begin
if abs(x-24) -
02009-07-27 14:49:34@
飓风音速好可爱……
-
02009-07-26 10:37:23@
浪费我好多正确率
-
02009-07-18 14:43:18@
水题
以前的难度观念和现在太不一样了
-
02009-07-18 11:14:16@
这都过,没天理了~!~
var
a:array[1..4] of longint;
dd:array[1..4] of boolean;
ch:char;
i:longint;
procedure input;
var s,st:string;
l,i:longint;
begin
readln(s);
s:=s+' ';
for i:=1 to 4 do
begin
l:=pos(' ',s);
st:=copy(s,1,l-1);
delete(s,1,l);
if l=3 then begin a[i]:=10; continue; end;
case st[1] of
'2'..'9':a[i]:=ord(st[1])-48;
'J':a[i]:=11;
'Q':a[i]:=12;
'K':a[i]:=13;
'A':a[i]:=1;
end;
end;
end;procedure dfs(t:longint;x:real);
var i:longint;
begin
if (t=5) then
begin
if abs(x-24) -
02009-07-17 14:21:54@
这题考点在于RP。
如果没RP,这题难度就是3,否则就是1!
注意精度:0.00001,还有‘A’代表1! -
02009-08-28 13:29:34@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms给个地放程序……
本人出错指南:(给C/C++的人带来福音)
提交5次
第一次运行时错误,i,j居然打反了,还能过一个点,浪费0.7小时
第二次 我也不知道怎么错了
第三次 精度好像不够
第四次 输入没处理10的情况
第五次 AC……望本人的教训(下降1个百分点)不要在发生了
痛苦ing……我的标程:
#include
#include
#include
using namespace std;
float number[10];
int search(int n)
{
int i,j;
float a,b;
if(n==1)
{
if(number[0]==24)
return 1;
else
return 0;
}
for(i=0;i>c;
number[i]=10;
}
else {
number[i]=c-'0';}
}
if(search(4))
cout -
02009-06-15 15:51:35@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
随机十几次终于AC了 -
02009-06-05 17:02:14@
F!大家要注意精度问题,每次计算我用的是0.0001约等于零才能过
四次提交的惨痛经历阿!! -
02009-06-03 20:38:04@
套数据:
第1个点:1
第2个点:1
第3个点:0
第4个点:1
第5个点:1
第6个点:0
第7个点:0
第8个点:1
第9个点:0
第10个点:0
希望大家珍惜!!
但不要cheat.. -
02009-05-29 17:17:42@
没看见A代表1而WA了2次 \(_\)
program twenty_four_points_game;
const v=0.00000001;
var i,k,ok:integer;
s,st:string;
a:array[1..4,1..4] of extended;
procedure dfs(k:integer);
var i,j,h,t:integer;
begin
if k=1 then
begin
if abs(a[1,1]-24)v then
begin
a[k-1,1]:=a[k,i]/a[k,j];
dfs(k-1);
end;
end;
end;
begin
readln(s);
s:=s+' ';
for i:=1 to 4 do
begin
st:=copy(s,1,pos(' ',s)-1);
if st='A' then a[4,i]:=1 else
if st='J' then a[4,i]:=11 else
if st='Q' then a[4,i]:=12 else
if st='K' then a[4,i]:=13 else
begin
val(st,k,ok);
a[4,i]:=k;
end;
delete(s,1,pos(' ',s));
end;
dfs(4);
writeln(0);
end. -
02009-04-29 22:31:02@
注意 a-b b-a,a/b b/a,是不同的
-
02009-04-28 16:54:14@
begin
randomize;
writeln(random(2));
end.
我就这么A的!!!
RP~ ~问题 -
02009-04-18 11:54:47@
const
c=0.000001;
type
arr=array[0..4] of real;
var
a:arr;
procedure init;
var
i,p:longint;
m:char;
begin
for i:=1 to 4 do
begin
read(m);
if m='A' then begin a[i]:=1;read(m); end;
if m='Q' then begin a[i]:=12;read(m); end;
if m='J' then begin a[i]:=11;read(m); end;
if m='K' then begin a[i]:=13;read(m); end;
if m in ['1'..'9'] then
begin
val(m,a[i]);
read(m);
while m in['0'..'9'] do
begin
val(m,p);
a[i]:=10*a[i]+p;
read(m);
end;
end;
end;
end;
function match(x,y:real):boolean;
begin
if abs(x-y)r then
begin
done(a);
exit;
end;
for i:=f to r do
begin
a[0]:=a[f];
a[f]:=a[i];
a[i]:=a[0];
create(f+1,r,a);
end;
end;
begin
init;
create(1,4,a);
write(0);
end. -
02009-04-13 15:30:53@
看先操作中间两个数在两边还是先两边再中间
我 生成4个的排列...囧
发现24点的中途是可以出现分数的,只是这题数据太弱了。。。
并且...除数不能为0... -
02009-03-18 16:12:49@
强搜?硬搜!直搜..
-
02009-02-22 09:54:04@
program bfsss;
type nnn=1..4;
var b,c:array[1..5] of single; flag,f2:set of 1..4;
d:array[1..5] of integer;
a:array[1..5] of single;
procedure init;
var s:string;p,i,le,t,code:integer;ch:string[2];
begin
readln(s); t:=0;
le:=length(S);
repeat
i:=le;
while (i>0)and(s[i]' ') do dec(i);
inc(t);ch:= copy(s,i+1,le-i);
val(ch,d[t],code);
if code0 then case ch[1] of
'A':d[t]:=1;
'J':d[t]:=11;
'Q':d[t]:=12;
'K':d[t]:=13;
end;
le:=i-1;
until ib then
b:=a/b
else b:=b/a;
end;
else b:=10000;
end;
end;
procedure check2;
beginif b[4]=24 then begin writeln('1');halt;end;
end;
procedure check(i:integer);
var j:integer;
begin
if i=4 then begin check2;b[4]:=c[4];exit;end;
for j:=1 to 4 do
{if not(j in f2) then} begin
f2:=f2+[j];cal(j,b[i],b);
if b10000 then
check(i+1);
f2:=f2-[j];
end;
b[i]:=c[i];
end;
procedure dfs(i:integer);
var j:integer;
begin
for j:=1 to 4 do
if not(j in flag) then begin
flag:=flag+[j];b[i]:=a[j];
if i=4 then begin c:=b;check(1);end
else dfs(i+1);
flag:=flag-[j];b[i]:=0;
end;
end;
begin
init;
dfs(1);
writeln('0');
end. -
02009-02-09 23:23:25@
#include
using namespace std;double a[5];
bool h[5];double opt(double x1,double x2,int d)
{
if (d==1) return x1+x2;
if (d==2) return x1-x2;
if (d==3) return x2-x1;
if (d==4) return x1*x2;
if (d==5) return x1/x2;
if (d==6) return x2/x1;
}bool search(int x)
{
if (x==1&&a[1]==24) return true;
for (int i=1;ic;a[i]=10;}
else a[i]=c-'0';
}
if (search(4)) cout -
02009-02-05 11:20:06@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msvar
i,j,k,n,m,jingdua:longint;
b:array[0..5]of boolean;
v:array[0..1000]of boolean;
f:array[0..5]of extended;
w,a:array[0..5]of longint;
ss:extended;
s,c:string;procedure li(x:longint);
var
i,j,k:longint;
begin
if x>3
then if (ss24-0.0000000001) then begin
write(1); halt end
else exit;for i:=1 to 6 do
begin
if i=1
then begin ss:=ss+f[x+1]; li(x+1); ss:=ss-f[x+1]; end;
if i=2
then begin ss:=ss-f[x+1]; li(x+1); ss:=ss+f[x+1]; end;
if i=3
then begin ss:=f[x+1]*ss; li(x+1); ss:=ss/f[x+1]; end;
if (i=4)and(ss0)
then begin ss:=f[x+1]/ss; li(x+1); ss:=f[x+1]/ss; end;
if (i=5)
then begin ss:=ss/f[x+1]; li(x+1); ss:=ss*f[x+1]; end;
if (i=6)
then begin ss:=f[x+1]-ss; li(x+1); ss:=f[x+1]-ss; end;
end;
end;procedure pi(dd:longint);
var
i:longint;
begin
if dd>4
then begin
fillchar(v,sizeof(v),true);
ss:=f[1];
li(1);
end;for i:=1 to 4 do
if b[i]
then begin
b[i]:=false;
f[dd]:=a[i];
pi(dd+1);
b[i]:=true;
end;
end;begin
readln(s);
k:=0;
for i:=1 to length(s) do
if s[i]=' '
then begin inc(k); w[k]:=i end;
w[0]:=0;
w[k+1]:=length(s)+1;
for i:=1 to k+1 do
begin
c:=copy(s,w+1,w[i]-w-1);
if c='J'
then a[i]:=11
else if c='Q'
then a[i]:=12
else if c='K'
then a[i]:=13
else if c='A'
then a[i]:=1
else val(c,a[i]);
end;
fillchar(b,sizeof(b),true);
pi(1);
write(0);
end.该死的精度问题.....
注意啊