- #include <iostream> 
- #include <cstring> 
- using namespace std; 
-   
- int main() { 
- 	const int MAX_SIZE = 256; // 256 - максимальное кол-во букв по условию + нулевой символ 
- 	char *cipher = new char [MAX_SIZE];  
- 	cin.getline (cipher,MAX_SIZE); 
- 	int k; 
- 	cin >> k; 
- 	for(int i = 0; i < strlen(cipher); i++){  // Цикл дешифровки выполняется до последней буквы 
- 		if(cipher[i] >= 'A' + k) cipher[i] -= k; 
- 		else cipher[i] = 'Z' - (k - (cipher[i] - '@')); //cipher[i] - '@' расстояние между i-ым символом и символом 'A', где '@' - символ идущий перед символом 'A' 
- 		/* Если полученный символ принадлежит к заглавным латинским буквам, ставим его на место зашифрованного 
- 		   Если нет, то возвращаемся к символу "Z" и отступаем от него на k минус уже пройденное кол-во символов */ 
- 	} 
- 	cout << cipher; 
- 	return 0; 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewoJY29uc3QgaW50IE1BWF9TSVpFID0gMjU2OyAvLyAyNTYgLSDQvNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC7LdCy0L4g0LHRg9C60LIg0L/QviDRg9GB0LvQvtCy0LjRjiArINC90YPQu9C10LLQvtC5INGB0LjQvNCy0L7QuwoJY2hhciAqY2lwaGVyID0gbmV3IGNoYXIgW01BWF9TSVpFXTsgCgljaW4uZ2V0bGluZSAoY2lwaGVyLE1BWF9TSVpFKTsKCWludCBrOwoJY2luID4+IGs7Cglmb3IoaW50IGkgPSAwOyBpIDwgc3RybGVuKGNpcGhlcik7IGkrKyl7ICAvLyDQptC40LrQuyDQtNC10YjQuNGE0YDQvtCy0LrQuCDQstGL0L/QvtC70L3Rj9C10YLRgdGPINC00L4g0L/QvtGB0LvQtdC00L3QtdC5INCx0YPQutCy0YsKCQlpZihjaXBoZXJbaV0gPj0gJ0EnICsgaykgY2lwaGVyW2ldIC09IGs7CgkJZWxzZSBjaXBoZXJbaV0gPSAnWicgLSAoayAtIChjaXBoZXJbaV0gLSAnQCcpKTsgLy9jaXBoZXJbaV0gLSAnQCcg0YDQsNGB0YHRgtC+0Y/QvdC40LUg0LzQtdC20LTRgyBpLdGL0Lwg0YHQuNC80LLQvtC70L7QvCDQuCDRgdC40LzQstC+0LvQvtC8ICdBJywg0LPQtNC1ICdAJyAtINGB0LjQvNCy0L7QuyDQuNC00YPRidC40Lkg0L/QtdGA0LXQtCDRgdC40LzQstC+0LvQvtC8ICdBJwoJCS8qINCV0YHQu9C4INC/0L7Qu9GD0YfQtdC90L3Ri9C5INGB0LjQvNCy0L7QuyDQv9GA0LjQvdCw0LTQu9C10LbQuNGCINC6INC30LDQs9C70LDQstC90YvQvCDQu9Cw0YLQuNC90YHQutC40Lwg0LHRg9C60LLQsNC8LCDRgdGC0LDQstC40Lwg0LXQs9C+INC90LAg0LzQtdGB0YLQviDQt9Cw0YjQuNGE0YDQvtCy0LDQvdC90L7Qs9C+CgkJICAg0JXRgdC70Lgg0L3QtdGCLCDRgtC+INCy0L7Qt9Cy0YDQsNGJ0LDQtdC80YHRjyDQuiDRgdC40LzQstC+0LvRgyAiWiIg0Lgg0L7RgtGB0YLRg9C/0LDQtdC8INC+0YIg0L3QtdCz0L4g0L3QsCBrINC80LjQvdGD0YEg0YPQttC1INC/0YDQvtC50LTQtdC90L3QvtC1INC60L7Quy3QstC+INGB0LjQvNCy0L7Qu9C+0LIgKi8KCX0KCWNvdXQgPDwgY2lwaGVyOwoJcmV0dXJuIDA7Cn0=