Advertisement
wojiaocbj

BD

Jun 11th, 2022
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.38 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <string.h>
  4. void genkey(char *key,char *result){
  5.     int i,p = 0;
  6.     char vis[30] = {0};
  7.     for(i = 0;key[i];i++){
  8.         if(isupper(key[i])){
  9.             if(!vis[key[i] - 'A']){
  10.                 vis[key[i] - 'A'] = 1;
  11.                 result[p] = tolower(key[i]);
  12.                 p++;
  13.             }
  14.         }
  15.         else{
  16.             if(!vis[key[i] - 'a']){
  17.                 vis[key[i] - 'a'] = 1;
  18.                 result[p] = key[i];
  19.                 p++;
  20.             }
  21.         }
  22.     }
  23.     for(i = 0;i < 26;i++){
  24.         if(!vis[i]){
  25.             result[p] = i + 'a';
  26.             p++;
  27.         }
  28.     }
  29. }
  30. void encrypt(char *table,char ch1,char ch2){
  31.     int i1 = 0,i2 = 0;
  32.     while(table[i1] != ch1)i1++;
  33.     while(table[i2] != ch2)i2++;
  34.     int x1 = i1 % 5,x2 = i2 % 5,y1 = i1 / 5,y2 = i2 / 5;
  35.     if(x1 == x2){
  36.         putchar(table[((y1 + 1) % 5) * 5 + x1]);
  37.         putchar(table[((y2 + 1) % 5) * 5 + x2]);
  38.     }
  39.     else if(y1 == y2){
  40.         putchar(table[y1 * 5 + (x1 + 1) % 5]);
  41.         putchar(table[y1 * 5 + (x2 + 1) % 5]);
  42.     }
  43.     else{
  44.         putchar(table[y1 * 5 + x2]);
  45.         putchar(table[y2 * 5 + x1]);
  46.     }
  47. }
  48. int main(int argc,char **argv){
  49.     char buffer[30] = {0};
  50.     char table[30] = {0};
  51.     char data[256] = {0};
  52.     scanf("%s",buffer);
  53.     scanf("%s",data);
  54.     genkey(buffer,table);
  55.     int i = 0,n = strlen(data);
  56.     while(i < n){
  57.         if(i == n - 1 || tolower(data[i]) == tolower(data[i + 1])){
  58.             encrypt(table,tolower(data[i]),'x');
  59.             i += 1;
  60.         }
  61.         else{
  62.             encrypt(table,tolower(data[i]),tolower(data[i + 1]));
  63.             i += 2;
  64.         }
  65.     }
  66.     return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement