Skip to content

Commit 0a3401b

Browse files
Merge pull request #299 from rock8forever/master
Hash_alg
2 parents c524a69 + 1dd06c4 commit 0a3401b

3 files changed

Lines changed: 81 additions & 0 deletions

File tree

‎Hash_alg/Hash.cbp‎

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
2+
<CodeBlocks_project_file>
3+
<FileVersion major="1" minor="6" />
4+
<Project>
5+
<Option title="xsolla" />
6+
<Option pch_mode="2" />
7+
<Option compiler="gcc" />
8+
<Build>
9+
<Target title="Debug">
10+
<Option output="bin/Debug/xsolla" prefix_auto="1" extension_auto="1" />
11+
<Option object_output="obj/Debug/" />
12+
<Option type="1" />
13+
<Option compiler="gcc" />
14+
<Compiler>
15+
<Add option="-g" />
16+
</Compiler>
17+
</Target>
18+
<Target title="Release">
19+
<Option output="bin/Release/xsolla" prefix_auto="1" extension_auto="1" />
20+
<Option object_output="obj/Release/" />
21+
<Option type="1" />
22+
<Option compiler="gcc" />
23+
<Compiler>
24+
<Add option="-O2" />
25+
</Compiler>
26+
<Linker>
27+
<Add option="-s" />
28+
</Linker>
29+
</Target>
30+
</Build>
31+
<Compiler>
32+
<Add option="-Wall" />
33+
<Add option="-fexceptions" />
34+
</Compiler>
35+
<Unit filename="main.cpp" />
36+
<Extensions>
37+
<code_completion />
38+
<envvars />
39+
<debugger />
40+
</Extensions>
41+
</Project>
42+
</CodeBlocks_project_file>

‎Hash_alg/Hash.cpp‎

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
const long long M = 1e6 + 1, m = 1e9 + 7, P = 31;
6+
long long h[M], h1[M], Pow[M];
7+
8+
void Hash(string& s, long long* h, long long* Pow) //main hashing alg
9+
{
10+
h[0] = 0;
11+
Pow[0] = 1;
12+
for (int i = 1; i <= s.size(); i++ )
13+
{
14+
h[i] = (h[i - 1] * P + s[i - 1]) % m;
15+
Pow[i] = Pow[i - 1] * P % m;
16+
}
17+
}
18+
19+
int calculateHash(long long l, long long r, long long* h, long long* Pow) //just calculating our hash
20+
{
21+
return (h[r] - h[l] * Pow[r - l] + m * m) % m;
22+
}
23+
24+
int main()
25+
{
26+
//freopen("input.txt", "r", stdin);
27+
string s1, s2; //just an example
28+
cin >> s1 >> s2;
29+
Hash(s1, h, Pow);
30+
Hash(s2, h1, Pow);
31+
if (calculateHash(0, s1.size(), h, Pow) == calculateHash(0, s2.size(), h1, Pow))
32+
{
33+
cout << "\nStrigs are identical";
34+
return 0;
35+
}
36+
cout << "\nString are non identical";
37+
return 0;
38+
}
39+

‎Hash_alg/bin/Release/Hash.exe‎

1.55 MB
Binary file not shown.

0 commit comments

Comments
 (0)