zoukankan      html  css  js  c++  java
  • Vigenère 密码

    这个东西的源码: ```html 可登录,可提交,挺好使 ``` 注:动态题面查看测试中,有问题反馈哦。

    标签:
    (fbox{模拟})
    (fbox{字符串处理})

    代码:

    #include <iostream>
    #include <cstring>
    #include <string>
    #include <cstdlib>
    using namespace std;
    char s[28][28] = {
    {"abcdefghijklmnopqrstuvwxyz"},
    {"bcdefghijklmnopqrstuvwxyza"},
    {"cdefghijklmnopqrstuvwxyzab"},
    {"defghijklmnopqrstuvwxyzabc"},
    {"efghijklmnopqrstuvwxyzabcd"},
    {"fghijklmnopqrstuvwxyzabcde"},
    {"ghijklmnopqrstuvwxyzabcdef"},
    {"hijklmnopqrstuvwxyzabcdefg"},
    {"ijklmnopqrstuvwxyzabcdefgh"},
    {"jklmnopqrstuvwxyzabcdefghi"},
    {"klmnopqrstuvwxyzabcdefghij"},
    {"lmnopqrstuvwxyzabcdefghijk"},
    {"mnopqrstuvwxyzabcdefghijkl"},
    {"nopqrstuvwxyzabcdefghijklm"},
    {"opqrstuvwxyzabcdefghijklmn"},
    {"pqrstuvwxyzabcdefghijklmno"},
    {"qrstuvwxyzabcdefghijklmnop"},
    {"rstuvwxyzabcdefghijklmnopq"},
    {"stuvwxyzabcdefghijklmnopqr"},
    {"tuvwxyzabcdefghijklmnopqrs"},
    {"uvwxyzabcdefghijklmnopqrst"},
    {"vwxyzabcdefghijklmnopqrstu"},
    {"wxyzabcdefghijklmnopqrstuv"},
    {"xyzabcdefghijklmnopqrstuvw"},
    {"yzabcdefghijklmnopqrstuvwx"},
    {"zabcdefghijklmnopqrstuvwxy"},
    };
    
    signed main() {
    	string key;
    	string v1;
    	char v2[1000101];
    	int v2len = 0;
    	memset(v2,' ',sizeof(v2));
    	cin>>key;
    	cin>>v1;
    	if(v1.length()>key.length()) {
    		
    		int i = 0;
    		int j = 0;
    		int k = 0;
    		while(j<v1.length()) {
    			//´¦Àí´óд 
    			if(v1[j]>='A'&&v1[j]<='Z') {
    				if(key[i]>='A'&&key[i]<='Z') {
    					key[i] = key[i]-'A'+'a';
    				}
    				for(k = 0;k<26;++k) {
    					if(s[k][key[i]-'a']==v1[j]-'A'+'a') {
    						v2[v2len] = k+'A';
    						v2len++;
    					}
    				}
    			}
    			//´¦ÀíСд 
    			if(v1[j]>='a'&&v1[j]<='z') {
    				if(key[i]>='A'&&key[i]<='Z') {
    					key[i] = key[i]-'A'+'a';
    				}
    				for(k = 0;k<26;++k) {
    					if(s[k][key[i]-'a']==v1[j]) {
    						v2[v2len] = k+'a';
    						v2len++;
    					}
    				}
    			}
    			i++;
    			j++;
    			if(i==key.length()) {
    				i = 0;
    			}
    		}
    	} else {
    		int i = 0;
    		int j = 0;
    		int k = 0;
    		while(j<v1.length()) {
    			//´¦Àí´óд 
    			if(v1[j]>='A'&&v1[j]<='Z') {
    				if(key[i]>='A'&&key[i]<='Z') {
    					key[i] = key[i]-'A'+'a';
    				}
    				for(k = 0;k<26;++k) {
    					if(s[k][key[i]-'a']==v1[j]-'A'+'a') {
    						v2[v2len] = k+'A';
    						v2len++;
    					}
    				}
    			}
    			//´¦ÀíСд 
    			if(v1[j]>='a'&&v1[j]<='z') {
    				if(key[i]>='A'&&key[i]<='Z') {
    					key[i] = key[i]-'A'+'a';
    				}
    				for(k = 0;k<26;++k) {
    					if(s[k][key[i]-'a']==v1[j]) {
    						v2[v2len] = k+'a';
    						v2len++;
    					}
    				}
    			}
    			i++;
    			j++;
    		}
    	}
    //	cout<<v2len<<endl;
    	for(int i = 0;i<v2len;++i) {
    		cout<<v2[i];
    	}
    } 
    
  • 相关阅读:
    链表--判断一个链表是否为回文结构
    矩阵--“之”字形打印矩阵
    二叉树——平衡二叉树,二叉搜索树,完全二叉树
    链表--反转单向和双向链表
    codeforces 490C. Hacking Cypher 解题报告
    codeforces 490B.Queue 解题报告
    BestCoder19 1001.Alexandra and Prime Numbers(hdu 5108) 解题报告
    codeforces 488A. Giga Tower 解题报告
    codeforces 489C.Given Length and Sum of Digits... 解题报告
    codeforces 489B. BerSU Ball 解题报告
  • 原文地址:https://www.cnblogs.com/littlefrog/p/12217145.html
Copyright © 2011-2022 走看看