Um problema bem simples envolvendo código ASCII, capaz de ser resolvido em dois segundos: RCTCDGPUXQEGVTCFWBKWKUUQCIQTCXCKNCFCTCE
Descrição
Solução
Basta fazer um for deslocando cada letra as posições para esquerda (lembre-se que a descrição diz como que criptografa, aqui a gente quer descriptografar). Daí, só utilizar o seguinte artifício para deslocar uma letra x para esquerda dentro do intervalo [0,25], ou seja, no intervalo de 'A' a 'Z':
Dê uma olhada nas páginas Tabela ASCII e Deslocar dentro de um intervalo [0, N - 1] para entender por que essa operação acima funciona. Ao final teremos um número no intervalo [0,25] onde basta adicionarmos novamente o código ASCII da letra A para descobrirmos a letra resultante do deslocamento.
#include<string.h>#include<stdio.h>intmain(){char alfabeto[51];int N, deslocamento;scanf("%d\n",&N);for(int i =0; i < N; ++i){scanf("%[^\n]\n",&alfabeto);scanf("%d\n",&deslocamento);for(int j =0; j <strlen(alfabeto); ++j){ alfabeto[j] = ((alfabeto[j] -'A'- deslocamento +26) %26) +'A'; }printf("%s\n", alfabeto); }return0;}
var input =require('fs').readFileSync('/dev/stdin','utf8');var lines =input.split('\n');letN=parseInt(lines.shift());for(let i =0; i <N; ++i){let alfabeto =lines.shift();let deslocamento =parseInt(lines.shift()); let resposta = alfabeto.trim().split('').map((x) => String.fromCharCode(((x.charCodeAt(0) - 65 - deslocamento + 26) % 26) + 65)).join('');
console.log(resposta);}
N =int(input())for _ inrange(N): alfabeto =input() deslocamento =int(input()) resposta =''.join([chr(((ord(letra) -65- deslocamento +26) %26) +65) for letra in alfabeto])print(resposta)