p2492.dpr
来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· DPR 代码 · 共 73 行
DPR
73 行
program p2492;
{$APPTYPE CONSOLE}
uses math;
var
part , p , x : Longint;
s : String;
procedure dowith ( T : String; var A , B : Longint );
var xv : Boolean;
i , j , value , value2 , code : Longint;
begin
//writeln ( 'T = ' , T , '$' );
A := 0; B := 0; i := length ( T );
while ( i > 0 ) do
begin
if T [i] = 'x' then begin xv := true; dec ( i ) end else xv := false;
// writeln ( 'i = ' , i );
j := i;
if j > 0 then val ( copy ( T , j , i - j + 1 ) , value , code ); value2 := value;
if ( code <> 0 ) or ( j <= 0 ) then begin if ( j <= 0 ) or ( T [j] = '+' ) then value2 := 1 else value2 := -1; dec ( j );end else
while ( j > 0 ) and ( code = 0 ) do begin dec (j); value2 := value;
if j > 0 then val ( copy ( T , j , i - j + 1 ) , value , code ) else break;
end;
// writeln ( 'j = ' , j , ' ' ,value2);
if xv then inc ( A , value2 ) else inc ( B , value2 );
i := j;
end;
end;
function Check ( var x : Longint ) : Longint;
var left , right : String;
A , B , Ta , Tb , T : Longint;
begin
T := 1; while ( T <= length ( s )) do if s [T] = ' ' then Delete ( s , T , 1 ) else inc ( T );
T := pos ( '=' , s );
left := copy ( s , 1 , T - 1);
right := copy ( s , T + 1 , length ( s ) - T );
dowith ( left , Ta , Tb ); A := Ta; B := Tb;
dowith ( right , Ta , Tb ); dec ( A , Ta ); dec ( B , Tb );
if A = 0 then
if B = 0 then Check := 0
else Check := -1
else
begin
Check := 1;
x := floor ( - B / A );
end;
//writeln ( 'A = ' , A , ' B = ' , B );
end;
begin
readln ( part );
for p := 1 to part do
begin
readln ( s );
case Check ( x ) of
-1 : writeln ( 'IMPOSSIBLE' );
0 : writeln ( 'IDENTITY' );
1 : writeln ( x );
end;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?