111 条题解
-
0SecretAgent LV 10 @ 2009-09-21 23:01:56
汗,字符串果然要仔细考虑.
这种递归都交2次才过编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-09-17 20:30:07@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms囧!
交了n编,都90分!
看了楼下大牛的题解,发现用换底公式求n次幂居然会有精度误差!
吃一堑长一智! -
02009-09-17 09:57:57@
递归做得。说实话,自己都过得稀里糊涂的,改着改着就过了...
var i,j,k,n:integer;m:real;
a:array[0..15]of real;
procedure dg(x:real);
var i:integer;x1,x2:real;
begin
i:=15;
repeat
dec(i);
if x>=a[i] then begin x1:=a[i];x2:=x-a[i];;end
until x>=a[i];
if i=1 then
begin
if x2=0 then write('2') else write('2+')
end
else
begin
write('2(');
if i>2 then dg(i)else write(i);
if x2=0 then write(')') else write(')+');
end;
if x2>0 then
begin
j:=i;
repeat
dec(j);
until x2>=a[j];
dg(x2)
end;
end;
begin
readln(m);
for i:=0 to 14 do
a[i]:=exp(i*ln(2));
dg(m);
end. -
02009-09-16 19:53:55@
赞楼下lzylzylzy的题解
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms真应该好好学习,背过了
-
02009-08-29 17:34:21@
- -用暴力数组,比写递归容易- -,不过猥琐了点
-
02009-08-28 08:29:45@
program v1597;
var a:array[1..20000] of longint;
s:longint;
k:boolean;
procedure de(s:longint; var u:boolean);
var i:longint;
can:boolean;
begin
for i:=15 downto 0 do
begin
if s shr i=0 then continue;
if i>2
then begin
write('2','(');
can:=false;
de(i,can);
write(')');
if (s and ((1 shl i)-1))0 then write('+');
end
else begin
if u then write('+')
else u:=true;
if i=1 then write('2')
else write('2','(',i,')');
end;
s:=s and ((1 shl i)-1);
end;
end;
begin
readln(s);
k:=false;
de(s,k);
writeln;
end.
用了一点位运算…… -
02009-08-25 17:09:51@
超级递归
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msvar n,i,j:longint;
s:ansistring;function ss(q:longint):ansistring;
var i,j:longint;
s1,s2:ansistring;
begin
if q=2 then exit('2');
if q=1 then exit('2(0)');
if q=0 then exit('');
i:=1;j:=0;
while i -
02009-08-24 17:36:50@
program power(input,output);
var er:array [0..15] of longint;
i,shu:longint;
boo:boolean;
procedure cl(shu:longint);
var i,x:longint;
begin
if shu -
02009-08-21 20:11:53@
const int a[15]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384};
const string s[15]={ "2(0)",
"2",
"2(2)",
"2(2+2(0))",
"2(2(2))",
"2(2(2)+2(0))",
"2(2(2)+2)",
"2(2(2)+2+2(0))",
"2(2(2+2(0)))",
"2(2(2+2(0))+2(0))",
"2(2(2+2(0))+2)",
"2(2(2+2(0))+2+2(0))",
"2(2(2+2(0))+2(2))",
"2(2(2+2(0))+2(2)+2(0))",
"2(2(2+2(0))+2(2)+2)"};
唉,果然不严谨WA了好几次…… -
02009-08-21 17:06:52@
var i,j,n,x1,x:longint;
procedure try(k:longint);
var d,c:longint;
begin
if k=3 then write('2+2(0)')
else
begin
if k=2 then write('2')
else
if k=1 then write('2(0)')
else
begin
c:=0; d:=1;
while d -
02009-08-20 11:38:33@
简单的递归被打囧了
-
02009-08-10 11:03:49@
var i,j,n,x1,x:longint;
procedure try(k:longint);
var d,c:longint;
begin
if k=3 then write('2+2(0)')
else
begin
if k=2 then write('2')
else
if k=1 then write('2(0)')
else
begin
c:=0; d:=1;
while d -
02009-08-09 11:45:41@
如对本题有疑问可以参看我的题解:http://xujieqi.blog.hexun.com/35722312_d.html
-
02009-08-06 20:06:52@
很明显
这是一道用递归做的题 -
02009-08-05 21:12:41@
通过率这么高的题,我交了N次。第一次:用c++编的语言选成了pascal。后面几次:把常数数组的2048打成了1048。囧……
-
02009-08-05 19:59:10@
第一个点显示“运行超时|无输出”的注意了,该点输入数据为n=1
就为了这个“无输出”WA了5次................
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msvar n:integer;
s:array[0..20000] of ansistring;function f(n:integer):ansistring;
var st:ansistring;
a,l:integer;
beginif n=1 then exit('');
if s[n]'' then exit(s[n]);
f:='';
st:=binstr(n,15);
while st[1]='0' do delete(st,1,1);
for a:=1 to length(st) do
if st[a]'0' then l:=a;
for a:=1 to l do
if st[a]='1' then
if al then
if length(st)-a1 then f:=f+'2('+f(length(st)-a)+')+'
else f:=f+'2+'
else
if length(st)-a1 then f:=f+'2('+f(length(st)-a)+')'
else f:=f+'2';
s[n]:=f;end;
begin
s[0]:='0';
s[1]:='';
s[2]:='2';
s[3]:='2+2(0)';
s[4]:='2(2)';
s[5]:='2(2)+2(0)';
s[6]:='2(2)+2';
s[7]:='2(2)+2+2(0)';
s[8]:='2(2+2(0))';
s[9]:='2(2+2(0))+2(0)';
s[10]:='2(2+2(0))+2';
s[11]:='2(2+2(0))+2+2(0)';
s[12]:='2(2+2(0))+2(2)';
s[13]:='2(2+2(0))+2(2)+2(0)';
s[14]:='2(2+2(0))+2(2)+2';
read(n);
if n=1 then write('2(0)'); //该死的n=1
write(f(n));
end. -
02009-08-04 22:06:13@
爆囧
没看清题,多交了一次 -
02009-08-04 15:33:44@
想起数学书上一个叫秦九韶算法的我经常全错的东西...
递归不解释 楼下有公式 -
02009-08-04 14:08:19@
编译通过...
├ 测试数据 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-08-04 12:22:34@
var
n,i:integer;
s:array [0..20000] of string;
procedure run(n:integer);
var
i,j,k:integer;
begin
if s[n]'' then exit;
j:=n;
k:=16384;
for i:=14 downto 0 do
begin
if j>=k then
begin
j:=j-k;
if s[n]'' then s[n]:=s[n]+'+';
s[n]:=s[n]+'2';
if i1 then
begin
run(i);
s[n]:=s[n]+'('+s[i]+')';
end;
end;
k:=k div 2;
end;
end;
begin
for i:=0 to 20000 do s[i]:='';
s[0]:='0';
readln(n);
run(n);
writeln(s[n]);
end.