longlong型字符串哈希按理说超过14位会溢出但为什么本题可以ac
查看原帖
longlong型字符串哈希按理说超过14位会溢出但为什么本题可以ac
213454
HEU_ZWZ楼主2024/6/25 21:32

如题:ac记录 代码如下

#include<vector>
#include<string.h>
#include<stdio.h>
using namespace std;
vector<long long>line[1005];
char word[25];
long long trans(int sizet)
{
	long long num=0;
	for(int i=0;i<sizet;i++)
	{
		num=num*26+word[i]-'a'+1;
	}
	return num;
}
int main()
{
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		int t;
		scanf("%d",&t);
		for(int j=0;j<t;j++)
		{
			scanf("%s",&word);
			long long temp1=trans(strlen(word));
			line[i].push_back(temp1);
		}
	}
	int m;
	scanf("%d",&m);
	for(int i=0;i<m;i++)
	{
		scanf("%s",&word);
		long long check1=trans(strlen(word));
		for(int j=1;j<=n;j++)
		{
			bool flag=false;
			int sizet=line[j].size();
			for(int k=0;k<sizet;k++)
			{
				if(line[j][k]==check1)
				{
					flag=true;
					printf("%d ",j);
					break;
				}
				if(flag==true)
				break;
			}
		}
		printf("\n");
	}
	return 0;
}

求解答

2024/6/25 21:32
加载中...