⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3206826_ac_172ms_4768k.cc

📁 北大大牛代码 1240道题的原代码 超级权威
💻 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 + -