求大神帮忙~~~~数字反转(升级版)
pascal吧
全部回复
仅看楼主
level 1
lufei506 楼主
为什么只有95分
var
i,j,x,y,k1,k2,m,q,l:longint;
n,b,c:string;
begin
read(n);
l:=1;
j:=length(n);
k1:=j;
x:=pos('.',n);
y:=pos('/',n);
if n='0' then
begin
write('0');
halt;
end;
if n='0.0' then
begin
write('0.0');
halt;
end;
if n='0%' then
begin
write('0%');
halt;
end;
if (x=0)and(y=0)and(n[j]<>'%') then
begin
for i:=j downto 1 do
begin
if n[i]='0' then
begin
delete(n,i,1);
k1:=k1-1;
end
else break;
end;
for i:=k1 downto 1 do
write(n[i]);
end;
if (x<>0)and(y=0)and(n[j]<>'%') then
begin
b:=copy(n,x+1,j-x);
c:=copy(n,1,j-length(b)-1);
k1:=length(b);
k2:=length(c);
for i:=length(c) downto 1 do
if c[i]='0' then
begin
if c='0' then
break;
delete(c,i,1);
k2:=k2-1;
end
else break;
for i:=k2 downto 1 do
write(c[i]);
write('.');
for i:=1 to length(b) do
if b[i]='0' then
begin
if b='0' then
break;
delete(b,l,1);
k1:=k1-1;
l:=2;
end
else break;
for i:=k1 downto 1 do
write(b[i]);
end;
if (x=0)and(y<>0)and(n[j]<>'%') then
begin
b:=copy(n,y+1,j-y);
c:=copy(n,1,j-length(b)-1);
k1:=length(b);
k2:=length(c);
for i:=length(c) downto 1 do
begin
if c[i]='0' then
begin
if c='0' then
break;
delete(c,i,1);
k2:=k2-1;
end
else break;
end;
for i:=k2 downto 1 do
write(c[i]);
write('/');
for i:=length(b) downto 1 do
if b[i]='0' then
begin
if b='0' then
break;
delete(b,i,1);
k1:=k1-1;
end
else break;
for i:=k1 downto 1 do
write(b[i]);
end;
if (x=0)and(y=0)and(n[j]='%') then
begin
b:=copy(n,1,j-1);
for i:=length(b) downto 1 do
begin
if b[i]='0' then
begin
delete(b,i,1);
k1:=k1-1;
end
else break;
end;
for i:=length(b) downto 1 do
write(n[i]);
write('0%');
end;
end.
2015年08月18日 12点08分 1
level 12
哦?
2015年08月19日 07点08分 5
level 14
这个升级版的规则不懂啊。。
不过我随便试了几组自编数据,发现以下几点:
①点号、除号、百分号无法同时出现。
②点号、除号、百分号出现多个时。。乱了
③输入100%;输出:10%
④输入10%;输出:10%
⑤输入01;输出:10
⑥输入-120;输出21-
⑦输入-0;输出-
还有很多。。
其他的就看楼主自己了
2015年08月19日 10点08分 6
level 14
这道题后来我看了下,貌似洛谷里有,就A掉了。
目测楼主是因为百分数和前导零的缘故。
2015年08月19日 10点08分 7
1