Var s: string; a, b: integer; begin readln(s); if s[1] = 'x' then begin a := StrToInt(s[3]); b := StrToInt(s[5]); if s[2] = '-' then a := -a; writeln(b - a); end else if s[3] = 'x' then begin a := StrToInt(s[1]); b := StrToInt(s[5]); if s[2] = '-' then begin a := -a; b := -b; end; writeln(b - a); end else if s[5] = 'x' then begin a := StrToInt(s[1]); b := StrToInt(s[3]); if s[2] = '-' then b := -b; writeln(a + b); end end.
учтите что никакой защиты от дурака или неверного ввода
1) 511
2) 584
Объяснение:
1) Максимальным трёхзначным числом в восьмеричной системе счисления является 777
777₈ = 7 * 8² + 7 * 8¹ + 7 * 8⁰ = 7 * 64 + 7 * 8 + 7 * 1 = 511₁₀
2)
547₈
+
341₈
---------
1110₈
7 + 1 = 10 (0 пишем, 1 в уме)
4 + 4 = 10 10 + 1 (который был в уме) = 11 (1 пишем, 1 в уме)
5 + 3 = 10 10 + 1 (который был в уме) = 11 (пишем 11)
Полную таблицу сложения в 8 системе счисления смотри на картинке
1110₈ = 1 * 8³ + 1 * 8² + 1 * 8¹ + 0 * 8⁰ = 1 * 512 + 1 * 64 + 1 * 8 + 0 * 1 = 512 + 64 + 8 = 584₁₀
или
547₈ = 5 * 8² + 4 * 8¹ + 7 * 8⁰ = 5 * 64 + 4 * 8 + 7 * 1 = 320 + 32 + 7 = 359₁₀
341₈ = 3 * 8² + 4 * 8¹ + 1 * 8⁰ = 3 * 64 + 4 * 8 + 1 * 1 = 192 + 32 + 1 = 225₁₀
359₁₀ + 225₁₀ = 584₁₀
s: string;
a, b: integer;
begin
readln(s);
if s[1] = 'x' then begin
a := StrToInt(s[3]);
b := StrToInt(s[5]);
if s[2] = '-' then a := -a;
writeln(b - a);
end
else if s[3] = 'x' then begin
a := StrToInt(s[1]);
b := StrToInt(s[5]);
if s[2] = '-' then begin
a := -a;
b := -b;
end;
writeln(b - a);
end
else if s[5] = 'x' then begin
a := StrToInt(s[1]);
b := StrToInt(s[3]);
if s[2] = '-' then
b := -b;
writeln(a + b);
end
end.
учтите что никакой защиты от дурака или неверного ввода