社区讨论

为什么洛谷IDE和本地的运行结果不一样?

灌水区参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lo7fnntu
此快照首次捕获于
2023/10/27 01:03
2 年前
此快照最后确认于
2023/10/27 01:03
2 年前
查看原帖
CPP
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<bits/stdc++.h>
using namespace std;
inline long long read()
{
	long long x=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9')
	{
		if(ch=='-')
		f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')
	{
		x=x*10+(ch-'0');
		ch=getchar();
	}
	return x*f;
}
#define ull unsigned long long 
ull hash1[100001];
ull hash2[100001];
int cnt;
ull mod1=1e9+7;
ull mod2=1e9+9;
ull base=131;
ull power1[100001];
ull power2[100001];
void GetHash(string s)
{
	cnt++;
	int len=s.size()-1;
	for(int i=0;i<=len;i++)
	{
		hash1[cnt]+=int(s[i])*power1[i];
		hash2[cnt]+=int(s[i])*power2[i];
		hash2[cnt]%=mod2;
	}
}
void init()
{
	power1[0]=1;
	power2[0]=1;
	for(int i=1;i<=100000;i++)
	{
		power1[i]=power1[i-1]*base;
		power2[i]=power2[i-1]*base;
		power1[i]%=mod1;
		power2[i]%=mod2;
	}
}
map<pair<ull,ull>,int>m;
map<ull,int>m2;
int main()
{
	ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
	string s1;
	int n=read();
	init();
	for(int i=1;i<=n;i++)
	{
		cin>>s1;
		GetHash(s1);
	}
	int ans=0;
	for(int i=1;i<=n;i++)
	{
		/*if(m[make_pair(hash1[i],hash2[i])]==0)
		{
			m[make_pair(hash1[i],hash2[i])]++;
			ans++;
		}*/
		if(m2[hash1[i]]==0)
		{
			m2[hash1[i]]++;
			ans++;
		}
	}
	cout<<ans<<endl;
	return 0;
}

数据:
CPP
10
xEDHx
xEDHx
xEDHx
xEDHx
W4Zp
S2omTcV
AZ3XG
Oo2Ws5
QdKKAJY
xEDHx

本地结果正常,输出6
IDE直接干出来个1
难绷

回复

2 条回复,欢迎继续交流。

正在加载回复...