回 帖 发 新 帖 刷新版面

主题:A

公式变形(formula)
【问题描叙】
在数理化中常遇到公式变形,先让我们考虑最简单的一种。
公式定义为:左边=右边
左边,右边为一些大些字母与+,-(无括号)组成的式子,每一个大写字母为一个变量,在公式中最多出现一次。
【输入格式】
输入文件formula.in有两行,其中第一行为公式,第二行为目标变量。
【输出格式】
输出文件formula.out仅一行为目标变量对应的表达式,各个变量要按字母排序(小的在前),第一个‘+’不可省略。
【输入样例】
P=A+C-M
C
【输出样例】
-A+M+P

回复列表 (共1个回复)

沙发

随手敲的,没调试。
var
  f,l:boolean;
  a:array ['A'..'Z'] of shortint;
  c,cc:char;
begin
  for c:='A' to 'Z' do a[c]:=0;
  f:=false; l:=true;
  while not eoln do begin
    read(c);
    case c of
      '-':f:=true;
      '+':f:=false;
      '=':l:=false;
      'A'..'Z':a[c]:=ord(f xor l)*2-1;
    end;
  end;
  readln; readln(cc);
  for c:='A' to 'Z' do if c<>cc then if a[c]<>0 then
    if a[c]<>a[cc] then write('+',c) else write('-',c);
  readln;
end.

我来回复

您尚未登录,请登录后再回复。点此登录或注册