Description

J 君是机房的红太阳,每次模拟她总是 AK 虐场。然而在 NOIP2117 中,居然出现了另一位 AK 的选手 C 君! 这引起了组委会的怀疑,组委会认为 C 君有抄袭 J 君代码的嫌疑,原因是考试时 C 君正好 坐在 J 君旁边。于是组委会需要你帮她们鉴定一下 C 君是否抄了 J 君的代码。 NOIP2117 一共有 T 道题,每道题需要提交一份阿语言代码 (阿语言是 NOIP2117 的唯一可 用编程语言)。 一份阿语言代码只有一行,仅由小写字母,数字,空格和分号组成。 组委会认为,如果 C 君的代码可以由 J 君的代码经过若干次修改变量名操作得到,C 君就 抄了 J 君的代码。 一次修改变量名操作被定义为将代码中的所有小写字母 x 替换为小写字母 y(此处 x, y 代指 任意小写字母)。 请你告诉组委会,对于每道题,C 君是否抄了 J 君的代码。

Input

第一行一个正整数 T。 接下来 2T 行,第 2i 行代表 J 君对于第 i 道题的提交代码,第 2i + 1 行代表 C 君对于第 i 道题的提交代码。 

Output

输出 T 行,如果对于第 i 道题,C 君抄了 J 君的代码,请在第 i 行输出1,否则请在第 i 行 输出0。 

Solution

C 君抄了 J 君的代码当且仅当以下条件被满足:

1. 两个代码的长度相等

2. 两个代码所有非字母位置的字符对应相等

3. 考虑 J 君代码中一个字母 x 出现的所有位置,在 C 君的代码中,这些位置的字母须相等。

时间复杂度 O(T L),其中 L 为每行代码长度。

代码

 1 var
 2   c:array ['a'..'z'] of longint;
 3   s1,s2:ansistring;
 4   TT:longint;
 5 function fd(cc:char):boolean;
 6 begin
 7   if (ord(cc)>=97) and (ord(cc)<=122) then
 8     exit(true);
 9   exit(false);
10 end;
11
12 procedure main;
13 var
14   i,l1,l2:longint;
15   cc:char;
16 begin
17   l1:=length(s1);
18   l2:=length(s2);
19   if l1<>l2 then
20     begin
21       writeln('0');
22       exit;
23     end;
24   for cc:='a' to 'z' do
25     c[cc]:=0;
26   for i:=1 to l1 do
27     if s1[i]<>s2[i] then
28       begin
29         if (not fd(s1[i])) or (not fd(s2[i])) then
30           begin
31             writeln('0');
32             exit;
33           end;
34         if c[s1[i]]=0 then c[s1[i]]:=ord(s2[i]) else
35           if c[s1[i]]<>ord(s2[i]) then
36             begin
37               writeln('0');
38               exit;
39             end;
40       end;
41   writeln('1');
42 end;
43
44 begin
45   assign(input,'copycat.in');
46   assign(output,'copycat.out');
47   reset(input);
48   rewrite(output);
49   readln(TT);
50   while TT>0 do
51     begin
52       readln(s1);
53       readln(s2);
54       main;
55       dec(TT);
56     end;
57   close(input);
58   close(output);
59 end.

转载于:https://www.cnblogs.com/zyx-crying/p/9482076.html

5817. 【NOIP提高A组模拟2018.8.15】 抄代码相关推荐

  1. 5819. 【NOIP提高A组模拟2018.8.15】 大逃杀

    Description 自从 Y 君退役之后,她就迷上了吃鸡,于是她决定出一道吃鸡的题. Y 君将地图上的所有地点标号为 1 到 n,地图中有 n − 1 条双向道路连接这些点,通过一条 双向道路需要 ...

  2. 5814. 【NOIP提高A组模拟2018.8.14】 树(期望 + 倍增)

    5814. [NOIP提高A组模拟2018.8.14] 树 Problem 给定一棵nnn个点的树,m" role="presentation">mmm次询问,每次 ...

  3. JZOJ 5814. 【NOIP提高A组模拟2018.8.14】 树

    梦游中的你来到了一棵 N 个节点的树上. 你一共做了 Q 个梦, 每个梦需要你从点 u 走到点 v 之后才能苏醒, 由于你正在梦游, 所以每到一个节点后,你会在它连出去的边中等概率地选择一条走过去, ...

  4. JZOJ 5820. 【NOIP提高A组模拟2018.8.16】 非法输入

    Description 在算法竞赛中,题目一般保证了输入数据的合法性.然而在工程开发中,我们往往不期望程 序得到的输入都是合法的. D 君正忙着向校内 OJ 添加题目,在写了第 233 个 val.c ...

  5. 5778. 【NOIP提高A组模拟2018.8.8】没有硝烟的战争

    Description 被污染的灰灰草原上有羊和狼.有N只动物围成一圈,每只动物是羊或狼. 该游戏从其中的一只动物开始,报出[1,K]区间的整数,若上一只动物报出的数是x,下一只动物可以报[x+1,x ...

  6. jzoj5814 【NOIP提高A组模拟2018.8.14】 树 (树上期望,递归法列方程)

    题面 梦游中的你来到了一棵 N 个节点的树上. 你一共做了 Q 个梦, 每个梦需要你从点 u 走到 点 v 之后才能苏醒, 由于你正在梦游, 所以每到一个节点后,你会在它连出去的边中等概率地 选择一条 ...

  7. JZOJ5814. 【NOIP提高A组模拟2018.8.14】 树

    Description 梦游中的你来到了一棵 N 个节点的树上. 你一共做了 Q 个梦, 每个梦需要你从点 u 走到 点 v 之后才能苏醒, 由于你正在梦游, 所以每到一个节点后,你会在它连出去的边中 ...

  8. 5814. 【NOIP提高A组模拟2018.8.14】 树

    题目描述 梦游中的你来到了一棵 N 个节点的树上. 你一共做了 Q 个梦, 每个梦需要你从点 u 走到 点 v 之后才能苏醒, 由于你正在梦游, 所以每到一个节点后,你会在它连出去的边中等概率地 选择 ...

  9. jzoj5814 [NOIP提高A组模拟2018.8.14] 树 树形dp

    Description 梦游中的你来到了一棵 N 个节点的树上. 你一共做了 Q 个梦, 每个梦需要你从点 u 走到 点 v 之后才能苏醒, 由于你正在梦游, 所以每到一个节点后,你会在它连出去的边中 ...

最新文章

  1. 买卖股票的最佳时机II
  2. 全局搜索快捷键_Windows 自带的聚合搜索来了,与 Mac 的 Spotlight 相比体验如何?...
  3. 怎样一次性将一个word文档中所有图片保存
  4. The method getTextContent() is undefined for the type Node 错误解决办法
  5. eclipse解决国际化乱码问题
  6. 解决vi/vim中粘贴会在行首多很多缩进和空格的问题
  7. Android 2.3.5/4.0.3/4.1PowerManager简单总结和心得体会
  8. 使用EncryptByPassPhrase和DecryptByPassPhrase对MS SQLServer某一字段时行加密和解密
  9. echarter: ECharts的R语言接口(一)
  10. php+mysql 图书管理系统源码AfireHong
  11. JQ6500语音模块
  12. CS5211设计方案|替代CH7511B设计电路|EDP转LVDS转接板设计参考电路
  13. react redux mysql_实现React-redux的基本功能
  14. 获取中国 省市区 js
  15. PMEdit一个富文本框可以编辑文本、图片并可以显示GIF动画
  16. 计算机丢失fine,FineRecovery(文件恢复删除)4.29
  17. nagios详细解说
  18. RestCloudETL数据集成平台,轻量级的数据中台
  19. 【backtrader源代码解析17】sharpe.py源代码解析(backtrader计算夏普率的方式)
  20. Linux如何查看磁盘/分区的UUID

热门文章

  1. 【Redis笔记】简单动态字符串(SDS)
  2. LeetCode 516 最长回文子串
  3. java 时间戳验证_关于Java:在时间戳服务器上使用时间戳和身份验证对jar进行签名...
  4. 客户和服务器之间响应的序列,Redis的请求/响应协议和往返时间详解
  5. jQuery ajax post put 请求
  6. vscode上传GitHub
  7. html制作文字效果,10个text-shadow制作的文字效果
  8. python的模块导入问题_python的模块导入问题
  9. Python入门--列表元素的删除,remove(),pop(),切片,clear(),del
  10. 试题3 基础练习 数列排序