主题:小问题!
procedure jf(x:integer);
var i,j,k,m:integer;
begin
m:=0;
for j:=length(s[x-1]) downto 1 do begin
k:=(ord(s[x-1,j])-48)*2+m;
if k>9 then begin
k:=k mod 10;m:=1;
end else m:=0;
s[x,j]:=chr(k+48);
end;
if m>0 then s[x]:='1'+s[x];
end;
这是算一个高精乘法,每次乘2,S为字符串数组,为什么在S[X-1]=16时,执行S[X,J]:=CHR(K+48)这一步时,S并没有被付值,WHY?
整个程序为:
var s:array[1..200] of string[100];
a,b,c,n,x,i,j:integer;
max,m:string[200];
procedure jf(x:integer);
var i,j,k,m:integer;
begin
m:=0;
for j:=length(s[x-1]) downto 1 do begin
k:=(ord(s[x-1,j])-48)*2+m;
if k>9 then begin
k:=k mod 10;m:=1;
end else m:=0;
s[x,j]:=chr(k+48);
end;
if m>0 then s[x]:='1'+s[x];
end;
begin
readln(n,x);
a:=x-n+1;
s[1]:='1';
max:=s[1];
for i:=2 to a do begin
jf(i);
while length(s[i])>length(max) do max:='0'+max;
while length(s[i])<length(max) do s[i]:='0'+s[i];
n:=0;
for j:=length(s[i]) downto 1 do begin
x:=ord(s[i,j])-48+ord(max[j])-48+n;
if x>9 then begin
x:=x mod 10;n:=1;
end else n:=0;
max[j]:=chr(x+48);
end;
if n>0 then max:='1'+max;
end;
writeln(max)
end.
题目是,第一格放1个,2放2,3放4,4放8,8放16,如此如此,X为到多少格,N为从多少格起(这里我还没编好,先看看那个问题吧!)
先谢谢了
[em9]
var i,j,k,m:integer;
begin
m:=0;
for j:=length(s[x-1]) downto 1 do begin
k:=(ord(s[x-1,j])-48)*2+m;
if k>9 then begin
k:=k mod 10;m:=1;
end else m:=0;
s[x,j]:=chr(k+48);
end;
if m>0 then s[x]:='1'+s[x];
end;
这是算一个高精乘法,每次乘2,S为字符串数组,为什么在S[X-1]=16时,执行S[X,J]:=CHR(K+48)这一步时,S并没有被付值,WHY?
整个程序为:
var s:array[1..200] of string[100];
a,b,c,n,x,i,j:integer;
max,m:string[200];
procedure jf(x:integer);
var i,j,k,m:integer;
begin
m:=0;
for j:=length(s[x-1]) downto 1 do begin
k:=(ord(s[x-1,j])-48)*2+m;
if k>9 then begin
k:=k mod 10;m:=1;
end else m:=0;
s[x,j]:=chr(k+48);
end;
if m>0 then s[x]:='1'+s[x];
end;
begin
readln(n,x);
a:=x-n+1;
s[1]:='1';
max:=s[1];
for i:=2 to a do begin
jf(i);
while length(s[i])>length(max) do max:='0'+max;
while length(s[i])<length(max) do s[i]:='0'+s[i];
n:=0;
for j:=length(s[i]) downto 1 do begin
x:=ord(s[i,j])-48+ord(max[j])-48+n;
if x>9 then begin
x:=x mod 10;n:=1;
end else n:=0;
max[j]:=chr(x+48);
end;
if n>0 then max:='1'+max;
end;
writeln(max)
end.
题目是,第一格放1个,2放2,3放4,4放8,8放16,如此如此,X为到多少格,N为从多少格起(这里我还没编好,先看看那个问题吧!)
先谢谢了
[em9]