NC23990. CSL 的英语考试
描述
输入描述
第一行有一个整数 n ,表示卷子上题目的数量。
第二行有 26 个不同的英文小写字母(a - z),之间以空格分割,表示新的字典序。接下来的 n 行,每行有两个字符串,之间以空格分割,表示题目中的两个单词。
输出描述
对于每一道题,在一行输出其答案:如果 输出 "<";如果 输出 ">",否则输出 "="。
示例1
输入:
3 a b c d e f g h i j k l m n o p q r s t u v w x y z world wolf app apple panda panda
输出:
> < =
pypy3(pypy3.6.1) 解法, 执行用时: 299ms, 内存消耗: 72444K, 提交时间: 2020-04-18 09:53:32
n=int(input()) def judge(x,y): global alpha for i in range(len(x)): x[i]=alpha[x[i]] for i in range(len(y)): y[i]=alpha[y[i]] x="".join(x) y="".join(y) if x==y: print("=") elif x>y: print(">") else: print("<") alpha={} s=input().split() for i in range(26): alpha[s[i]]=chr(ord('a')+i) #print(alpha) for i in range(n): x,y=input().split() #print(x) judge(list(x),list(y))
C++11(clang++ 3.9) 解法, 执行用时: 89ms, 内存消耗: 488K, 提交时间: 2020-04-14 20:39:52
#include<bits/stdc++.h> using namespace std; map<char,int>arr; int main() { int n; cin>>n; char c; for(int i = 'a';i <= 'z'; i++) { cin>>c; arr[c]=i; } for(int j = 0;j < n;j++) { string s1,s2; cin>>s1>>s2; for(int i = 0;i < s1.size();i++) s1[i] = arr[s1[i]]; for(int i = 0;i < s2.size();i++) s2[i] = arr[s2[i]]; if(s1 > s2) cout<<">"<<endl; else if(s1 == s2) cout<<"="<<endl; else cout<<"<"<<endl; } return 0; }
C++14(g++5.4) 解法, 执行用时: 61ms, 内存消耗: 604K, 提交时间: 2019-04-10 21:34:56
#include<bits/stdc++.h> using namespace std; int main() { int i,T; char t[2]; char M[26]; cin>>T; string a,b; for(i=0;i<26;i++) cin>>t,M[t[0]-'a']='A'+i; while(T--) { for(i=0;i<26;i++) { cin>>a>>b; for(i=0;i<26;i++) replace(a.begin(),a.end(),(char)('a'+i),M[i]),replace(b.begin(),b.end(),(char)('a'+i),M[i]); puts(a<b?"<":a>b?">":"="); } } return 0; }
Python3(3.5.2) 解法, 执行用时: 300ms, 内存消耗: 3436K, 提交时间: 2019-03-31 11:36:34
n=int(input()) d={} s=input().split() for i in range(26): d[s[i]]=chr(i+65) for k in range(n): x=input().split() a='' b='' for i in x[0]: a+=d[i] for i in x[1]: b+=d[i] if a>b:print('>') elif a<b:print('<') else:print('=')