记录编号 81076 评测结果 AAAAAAAAAA
题目名称 [NOIP 2012]Vigenère密码 最终得分 100
用户昵称 GravatarTerryLam 是否通过 通过
代码语言 Pascal 运行时间 0.000 s
提交时间 2013-11-08 13:20:24 内存使用 0.00 MiB
显示代码纯文本
program vigenere;
var
  k,c:array[1..1001] of longint;
  p,q,i,j:longint;
  n:char;
begin
  assign(input,'vigenere.in');
  reset(input);
  p:=0;
  q:=0;
  while not eoln(input) do
    begin
      inc(p);
      read(n);
      k[p]:=ord(upcase(n))-65;
    end;
  readln;
  while not eoln(input) do
    begin
      inc(q);
      read(n);
      c[q]:=ord(n)-65;
    end;
  close(input);
  assign(output,'vigenere.out');
  rewrite(output);
  for i:=1 to q do
    begin
      if (c[i] in [0..25]) then
        c[i]:=(c[i]-k[(i-1) mod p+1]+26) mod 26
      else
        c[i]:=(c[i]-k[(i-1) mod p+1]+20) mod 26+32;
      write(chr(c[i]+65));
    end;
  writeln;
  close(output);
end.