2 条题解
-
1
def funct(text, key): alph=list("abcdefghijklmnopqrstuvwxyz") alphup=list("ABCDEFGHIJKLMNOPQRSTUVWXYZ") textup=True if(text in alph): textnum=alph.index(text) textup=False else: textnum=alphup.index(text) if(key in alph): keynum=alph.index(key) else: keynum=alphup.index(key) result=alph[(textnum - keynum) % 26] if(textup): result=alphup[alph.index(result)] return result key1=input() text1=input() newtext="" for i in range(len(text1)): newtext+=funct(text1[i],key1[i%len(key1)]) print(newtext)
-
1
介绍一个知识,ASCII的a是0110 0001B开始的,而A是从0110 0001B开始的。对于每个char i,i&31(011111)即为其在字母表中的序列,而不管他是大写还是小写,这样就可以实现代码长度的大大缩短。
至于格式...可以用lower,也可以直接判断位数是否大于0,不大于就+26。
#include <iostream> using namespace std; int main() { string k,c; cin>>k>>c; for (int i=0;i<c.length();i++) { int t=(k[i%k.length()]&31)-1; c[i]=(c[i]&31)-t>0?c[i]-t:c[i]-t+26; } cout<<c<<endl; return 0; }
- 1
信息
- ID
- 138
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 291
- 已通过
- 100
- 上传者