Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- Online Pascal Compiler.
- Code, Compile, Run and Debug Pascal program online.
- Write your code in this editor and press "Run" button to execute it.
- }
- {
- Online Pascal Compiler.
- Code, Compile, Run and Debug Pascal program online.
- Write your code in this editor and press "Run" button to execute it.
- }
- {
- Online Pascal Compiler.
- Code, Compile, Run and Debug Pascal program online.
- Write your code in this editor and press "Run" button to execute it.
- }
- program LR19;
- uses
- sysutils;
- type
- uk = ^List;
- List = record
- next : uk;
- inf : Char;
- num : Real;
- end;
- var
- Start : uk;
- x, y : Char;
- s1, s2 : Real;
- procedure Make (var Start : uk);
- begin
- New(Start);
- Start^.next := nil;
- end;
- procedure InsertHead (var Start : uk; x : Char);
- var
- Start_ : uk;
- begin
- Make(Start_);
- Start_^.inf := x;
- Start_^.next := Start;
- Start := Start_;
- end;
- procedure InsertHeadNum (var Start : uk; s : Real);
- var
- Start_ : uk;
- begin
- Make(Start_);
- Start_^.num := s;
- Start_^.next := Start;
- Start := Start_;
- end;
- procedure DeleteHead (var Start : uk; var x : Char);
- var
- Start_ : uk;
- begin
- x := Start^.inf;
- Start_ := Start;
- Start := Start^.next;
- Start_^.next := nil;
- Dispose(Start_);
- end;
- procedure DeleteHeadNum (var Start : uk; var s : Real);
- var
- Start_ : uk;
- begin
- s := Start^.num;
- Start_ := Start;
- Start := Start^.next;
- Start_^.next := nil;
- Dispose(Start_);
- end;
- procedure Transform (var Start : uk; exp: string; var result: string);
- var
- q: integer;
- x, y : Char;
- begin
- Start := nil;
- result := '';
- for q := 1 to Length(exp) do
- begin
- y := exp[q];
- case y of
- '*', '/' : InsertHead(Start, y);
- '+', '-' :
- begin
- if Start <> nil then
- while (Start <> nil) do
- begin
- if (Start^.inf = '(') then
- Break;
- DeleteHead(Start, x);
- result := result + x;
- end;
- InsertHead(Start, y);
- end;
- '(' : InsertHead(Start, y);
- ')' :
- begin
- while Start^.inf <> '(' do
- begin
- DeleteHead(Start, x);
- result := result + x;
- end;
- DeleteHead(Start, x);
- end;
- else
- result := result + y;
- end;
- end;
- while Start <> nil do
- begin
- DeleteHead(Start, x);
- result := result + x;
- end;
- end;
- procedure calc (Start : uk; exp: string; var result: real);
- var
- s1, s2 : Real;
- x : Char;
- v: integer;
- begin
- s1 := 0;
- s2 := 0;
- Start := nil;
- for v := 1 to length(exp) do
- begin
- x := exp[v];
- if not(x in['0'..'9']) then
- begin
- DeleteHeadNum(Start, s1);
- DeleteHeadNum(Start, s2);
- case x of
- '+' : InsertHeadNum(Start, s2 + s1);
- '-' : InsertHeadNum(Start, s2 - s1);
- '*' : InsertHeadNum(Start, s2 * s1);
- '/' : InsertHeadNum(Start, s2 / s1);
- end;
- end
- else
- InsertHeadNum(Start, StrToInt(x));
- end;
- DeleteHeadNum(Start, s1);
- result := s1;
- end;
- var
- n,k:integer;
- a:array of byte;
- function GetOp(g: integer): Char;
- begin
- case a[g] of
- 0: GetOp := '+';
- 1: GetOp := '-';
- 2: GetOp := '*';
- 3: GetOp := '/';
- end;
- end;
- procedure FuckYourself();
- var
- exp, transformed: string;
- z: integer;
- res: real;
- begin
- exp := '1';
- for z := 0 to k-1 do
- exp := exp + GetOp(z) + IntToStr(z+2);
- transform(Start, exp, transformed);
- calc(Start, transformed, res);
- if res = 100 then
- writeln(exp);
- end;
- procedure gen(i:integer);
- var
- j:integer;
- begin
- if i>k-1 then begin fuckyourself();exit; end;
- for j:=0 to n do begin
- a[i]:=j;
- gen(i+1);
- end;
- end;
- begin
- write('n,k=');
- readln(n,k);
- setlength(a,k);
- gen(0);
- readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement