当前位置:首页 > 2007-2011年noip初赛提高组试题及答案
ans.num[i] := ans.num[i] div 2; end;
ans.num[i] := ans.num[i] div 2; if ans.num[ans.len] = 0 then dec(ans.len); average := ans; end;
function plustwo(a : hugeint) : hugeint; var
i : integer; ans : hugeint; begin ans := a;
ans.num[1] := ans.num[1] + 2; i := 1;
while(i <= ans.len) and (ans.num[i] >= 10) do begin
ans.num[i + 1] := ans.num[i + 1] + ans.num[i] div 10; ans.num[i] := ans.num[i] mod 10; inc(i); end;
if ans.num[ans.len + 1] > 0 then___⑤___; plustwo := ans; end;
function over(a, b : hugeint) : boolean; var
i : integer; begin
if(___⑥___)then begin
over := false; exit; end;
if a.1en > b.1en then begin
over := true; exit;
end;
for i := a.len downto 1 do begin
if a.num[i] < b.num[i] then begin
over := false; exit; end;
if a.num[i] > b.num[i] then begin
over := true; exit; end; end;
over := false; end;’ begin readln(s);
fillchar(target.num, sizeof(target.num), 0); target.1en := 1ength(s); for i := 1 to target.1en do
target.num[i] := ord(s[target.1en – i + 1]) - ___⑦___; filichar(left.num, sizeof(1eft.num), 0); left.1en := 1; left.num[i] := 1; right := target; repeat
middle := average(1eft, right); if over(___⑧___) then right := middle else 1eft := middle;
until over(plustwo(1eft), right); for i := left.1en downto 1 do
write(1eft.num[i]); writeln;
共分享92篇相关文档