/*===================
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 ;
}