一题简单的模拟题
关键在于所有点全部都从已知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()
{
}