/*===================
From : Zoj1006
Author : zscas08220
Algorithm :
ciphercode[i] = (plaincode[ki mod n] - i) % 28 --->
plaincode[ki % n] = (ciphercode[i]+i) % 28。
===================*/
#include<iostream>
#include<algorithm>
#include<string>
#include<cmath>
using namespace std ;
char CC [] = "_abcdefghijklmnopqrstuvwxyz." ;
char Msg [ 72 ];
int k , n , PT [ 72 ];
void ToPlainCode ()
{
for ( int i = 0 ; i < n; i ++ )
{
switch ( Msg [ i ])
{
case '_' :
PT [ i ] = 0 ; break ;
case '.' :
PT [ i ] = 27 ; break ;
default :
PT [ i ] = Msg [ i ] - 'a' + 1 ;
}
}
}
void Decrypt ()
{
int i ;
int tmp [ 72 ];
for ( i = 0 ; i < n; i ++ ) tmp [ i ] = PT [ i ];
for ( i = 0 ; i < n; i ++ )
{
PT [( k * i ) % n ] = ( tmp [ i ] + i ) % 28 ;
}
}
void ToText ()
{
for ( int i = 0 ; i < n; i ++ )
{
Msg [ i ] = CC [ PT [ i ]];
}
}
int main ()
{
while ( cin >> k && k )
{
cin >> Msg ;
n = strlen ( Msg );
ToPlainCode ();
Decrypt ();
ToText ();
cout << Msg << endl ;
}
return 0 ;
}
From : Zoj1006
Author : zscas08220
Algorithm :
ciphercode[i] = (plaincode[ki mod n] - i) % 28 --->
plaincode[ki % n] = (ciphercode[i]+i) % 28。
===================*/
#include<iostream>
#include<algorithm>
#include<string>
#include<cmath>
using namespace std ;
char CC [] = "_abcdefghijklmnopqrstuvwxyz." ;
char Msg [ 72 ];
int k , n , PT [ 72 ];
void ToPlainCode ()
{
for ( int i = 0 ; i < n; i ++ )
{
switch ( Msg [ i ])
{
case '_' :
PT [ i ] = 0 ; break ;
case '.' :
PT [ i ] = 27 ; break ;
default :
PT [ i ] = Msg [ i ] - 'a' + 1 ;
}
}
}
void Decrypt ()
{
int i ;
int tmp [ 72 ];
for ( i = 0 ; i < n; i ++ ) tmp [ i ] = PT [ i ];
for ( i = 0 ; i < n; i ++ )
{
PT [( k * i ) % n ] = ( tmp [ i ] + i ) % 28 ;
}
}
void ToText ()
{
for ( int i = 0 ; i < n; i ++ )
{
Msg [ i ] = CC [ PT [ i ]];
}
}
int main ()
{
while ( cin >> k && k )
{
cin >> Msg ;
n = strlen ( Msg );
ToPlainCode ();
Decrypt ();
ToText ();
cout << Msg << endl ;
}
return 0 ;
}