📄 3206826_ac_172ms_4768k.cc
字号:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int n, k;
int num[100001];
char *str[100001], al[100001][26];
void add(int a[],int b[], int c[])
{
int carry;
carry = 0;
for(int i = n-1; i >= 0; i--)
{
c[i] = a[i]+b[i]+carry;
if(c[i] >= num[i])
{
c[i] %= num[i];
carry = 1;
}
else
carry = 0;
}
}
void find(int id[])
{
int l;
char ret[100001];
l = 0;
for(int i = 0; i < n; i++)
{
ret[l++] = al[i][id[i]];
}
ret[l] = '\0';
puts(ret);
}
void getId(char s[],int array[])
{
for(int i = 0; i < n; i++)
{
for(int j = 0; al[i][j]; j++)
{
if(al[i][j]==s[i])
{
array[i] = j;
break;
}
}
}
}
int ida[100001];
int idb[100001];
int id[100001];
char a[100001], b[100001];
int main()
{
int i, j;
scanf("%d%d",&n,&k);
memset(num,0,sizeof(num));
for(i = 0; i < k; i++)
{
str[i] = (char *)malloc(sizeof(char)*(n+1));
scanf("%s",str[i]);
}
for(i = 0; i < n; i++)
{
int used[27];
memset(used,0,sizeof(used));
for(j = 0; j < k; j++)
{
if(!used[str[j][i]-'a'])
{
used[str[j][i]-'a'] = 1;
num[i]++;
}
}
int l = 0;
for(j = 0; j < 26; j++)
{
if(!used[j])
{
al[i][l++] = j+'a';
}
}
num[i] = 26-num[i];
}
scanf("%s%s",a,b);
getId(a,ida);
getId(b,idb);
add(idb,ida,id);
find(id);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -