Plataforma: URI (BEECROWD)
Problema: 1253
Enunciado:
Júlio César usava um sistema de criptografia, agora conhecido como Cifra de César, que trocava cada letra pelo equivalente em duas posições à Esquerda no alfabeto (por exemplo, 'C' vira 'A', 'T' vira 'R', etc.). Ao começo do alfabeto nós voltamos para o fim, isto é 'A' vira 'Y'. Nós podemos, é claro, tentar trocar as letras com quaisquer número de posições.
Linguagem: C
Solução:
#include <stdio.h> int main() { int n, i = 0, j, chave, tamanho; char *palavra = (char *) malloc(sizeof(char) * 50);; char alfabeto[26][27] = { "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "ZABCDEFGHIJKLMNOPQRSTUVWXY", "XZABCDEFGHIJKLMNOPQRSTUVWX", "XYZABCDEFGHIJKLMNOPQRSTUVW", "WXYZABCDEFGHIJKLMNOPQRSTUV", "VWXYZABCDEFGHIJKLMNOPQRSTU", "UVWXYZABCDEFGHIJKLMNOPQRST", "TUVWXYZABCDEFGHIJKLMNOPQRS", "STUVWXYZABCDEFGHIJKLMNOPQR", "RSTUVWXYZABCDEFGHIJKLMNOPQ", "QRSTUVWXYZABCDEFGHIJKLMNOP", "PQRSTUVWXYZABCDEFGHIJKLMNO", "OPQRSTUVWXYZABCDEFGHIJKLMN", "NOPQRSTUVWXYZABCDEFGHIJKLM", "MNOPQRSTUVWXYZABCDEFGHIJKL", "LMNOPQRSTUVWXYZABCDEFGHIJK", "KLMNOPQRSTUVWXYZABCDEFGHIJ", "JKLMNOPQRSTUVWXYZABCDEFGHI", "IJKLMNOPQRSTUVWXYZABCDEFGH", "HIJKLMNOPQRSTUVWXYZABCDEFG", "GHIJKLMNOPQRSTUVWXYZABCDEF", "FGHIJKLMNOPQRSTUVWXYZABCDE", "EFGHIJKLMNOPQRSTUVWXYZABCD", "DEFGHIJKLMNOPQRSTUVWXYZABC", "CDEFGHIJKLMNOPQRSTUVWXYZAB", "BCDEFGHIJKLMNOPQRSTUVWXYZA" }; scanf("%d ", &n); while (i++ < n) { scanf("%s", palavra); scanf("%i", &chave); tamanho = 0; while (palavra[tamanho] != '\0') tamanho++; j = 0; while (j < tamanho) { palavra[j] = alfabeto[chave][palavra[j] - 'A']; j++; } printf("%s\n", palavra); } return 0; }