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];
    	}
    } 
    
  • 相关阅读:
    HDU4341 Gold miner 分组背包
    卡特兰数
    欧拉函数
    求一个阶乘数尾零的个数
    线性时间 筛素数,求前n个数的欧拉函数值,求前n个数的约数个数
    HDU4335 What is N? 欧拉函数,欧拉定理
    HDU4336 Card Collector 容斥定理 Or 概率DP
    ie8恶心的bug4个小时的教训
    39个超实用jQuery实例应用特效
    ECSHOP 模板结构说明
  • 原文地址:https://www.cnblogs.com/littlefrog/p/12217145.html
Copyright © 2011-2022 走看看