一题简单的模拟题
关键在于所有点全部都从已知d的周围开始模拟;
#include
#include
#include
#include
#include
#include
#include
using namespace std;
char a[100] , b[100] , c[100] , m[100];
int x , sizea , sizeb , sizec , n;
void fun(int y)
{
int g =
(y+1)%sizec , i , h , f;
for(i = 0 ;
i < sizea ; i++)
if(c[y] ==
a[i]) break;
h = i;
for(i = 0 ;
i < sizea ; i++)
if(m[g] ==
a[i]) break;
f = i;
for(i = 0 ;
i < sizeb ; i++)
{
if(h ==
(f^i)) {m[y] = b[i]; return ;}
}//printf("%d %d %d %d\n" , y , h , f , i);
}
int main()
{
while(scanf("%d" , &x) && x)
{
getchar();
gets(a);
gets(b);
gets(c);
sizea =
strlen(a) , sizeb = strlen(b) , sizec = strlen(c);
n =
floor(sizec*sqrt(sizec*1.0)+x);
n =
n%sizec;
//
cout<<n<<endl;
int i ,
y;
for(i = 0; i
< sizea; i++)
if(c[n] ==
a[i]) break;
y = i;
m[n] =
b[y];
if(sizec ==
1)
{cout<<m[0]<<endl; continue ;}
for(i = n-1;
i >= 0 ; i--)
fun(i);
for(i =
sizec-1; i > n; i--)
fun(i);
m[sizec] =
'\0';
cout<<m<<endl;
}
return
0;
}
#include
#include
#include
#include
#include
#include
#include
using namespace std;
char a[100] , b[100] , c[100] , m[100];
int x , sizea , sizeb , sizec , n;
void fun(int y)
{
}
int main()
{
}