-
Notifications
You must be signed in to change notification settings - Fork 0
/
verifier.cpp
143 lines (122 loc) · 7.15 KB
/
verifier.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <string>
#include <iostream>
#include <fstream>
#define VERIFY(STR, INDEX, LEN) verify(STR, INDEX, LEN, _##INDEX)
using namespace std;
string _50 = "14159265358979323846264338327950288419716939937510"; // : 50
string _100 = "58209749445923078164062862089986280348253421170679"; // : 100
string _10000 = "46101264836999892256959688159205600101655256375678"; // : 10,000
string _12000 = "66830082383404656475880405138080163363887421637140"; // : 12,000
string _15000 = "11732131389574706208847480236537103115089842799275"; // : 15,000
string _20000 = "29681062037765788371669091094180744878140490755178"; // : 20,000
string _25000 = "83530136178653673760642166778137739951006589528877"; // : 25,000
string _40000 = "50915764639074693619881507814685262133252473837651"; // : 40,000
string _50000 = "06526234053394391421112718106910522900246574236041"; // : 50,000
string _75000 = "17161339575779076637076456957025973880043841580589"; // : 75,000
string _100000 = "70150789337728658035712790913767420805655493624646"; // : 100,000
string _120000 = "61369530899547584883024261962758985941513780515805"; // : 120,000
string _150000 = "85003842938167759796191272999045913439604283622782"; // : 150,000
string _200000 = "04007049111330970230468766158574831350801444759928"; // : 200,000
string _250000 = "51402520951792646811568298203136188273964266233216"; // : 250,000
string _400000 = "49560178282456727368563121850209804703624641761986"; // : 400,000
string _500000 = "49536223222219746596193325290740424876025138195242"; // : 500,000
string _750000 = "87614144519713784817621178977241435546735467024250"; // : 750,000
string _1000000 = "56787961303311646283996346460422090106105779458151"; // : 1,000,000
string _1200000 = "86537042768589418353870662496945358975129763649216"; // : 1,200,000
string _1500000 = "72936495004049671124794715117319607737991914462295"; // : 1,500,000
string _2000000 = "29071744735892565046166373563236871065191457297909"; // : 2,000,000
string _2500000 = "09628720527420345883029430519442403178331476913570"; // : 2,500,000
string _4000000 = "66678513954724032259806588297859674697473349203390"; // : 4,000,000
string _5000000 = "48865855191846702365421761783505181721320764619715"; // : 5,000,000
string _7500000 = "53779132239928659517065360445010053215255014054157"; // : 7,500,000
string _10000000 = "65326553194060999469787333810631719481735348955897"; // : 10,000,000
string _12000000 = "86015385005804204781425962782562134194538393719439"; // : 12,000,000
string _15000000 = "79645205263473393286074979323931503141172775669803"; // : 15,000,000
string _20000000 = "95072447895232808191116291055801380049338634527644"; // : 20,000,000
string _25000000 = "07864115924597806944245511285225546774836191884322"; // : 25,000,000
string _40000000 = "15549474891739340818758710379990396688301558150727"; // : 40,000,000
string _50000000 = "51300457960464561703242426307145541838017945652654"; // : 50,000,000
string _75000000 = "36222188271876374415864229102591433094375830289947"; // : 75,000,000
string _100000000 = "75722031752074898161168313937514970581120187751592"; // : 100,000,000
string _120000000 = "51047592621298284894125940561718387308974767965950"; // : 120,000,000
string _150000000 = "31289424139360224684057529809568429909659910630131"; // : 150,000,000
string _200000000 = "70272778107370562338936568748183204322022549381399"; // : 200,000,000
string _250000000 = "99588667341705167068851578520800675203953452027780"; // : 250,000,000
string _400000000 = "13838896233104782220234841637306783528489092823653"; // : 400,000,000
string _500000000 = "50024778830364214864590680053270523687343293261427"; // : 500,000,000
string _750000000 = "92732205344584435023303097417649894269149620136988"; // : 750,000,000
string _1000000000 = "71398682093196353628204612755715171395115275045519"; // : 1,000,000,000
string _1200000000 = "72912593081212086869129310622322863444636299583604"; // : 1,200,000,000
string _1500000000 = "28645378082135603814855914764072758306381217050377"; // : 1,500,000,000
string _2000000000 = "86430813147294569162304083903758389223023009559510"; // : 2,000,000,000
bool verify(string input, int index, int len, string ans) {
if (input.size() < index && input.size() < index-len) {
cerr << " [*] Not that long, ignore this test. " << input.size() << " < index(" << index << ")" << endl;
return 0;
}
string ss = input.substr(index-len, len);
if (ss == ans) {
cerr << " [O] Pass at index = " << index << endl;
return 0;
}
cerr << " [X] Failed at index = " << index << endl;
cerr << " [*] input = " << ss << endl;
cerr << " [*] ans = " << ans << endl;
return -1;
}
int main() {
string input;
ifstream ifs("pi_concurrent.txt");
ifs >> input;
cerr << " [*] input size = " << input.size() << endl;
if (input.size() > 2) input = input.substr(2, input.size()-2);
else return -1;
if (VERIFY(input, 50, 50)) return -1;
if (VERIFY(input, 100, 50)) return -1;
if (VERIFY(input, 10000, 50)) return -1;
if (VERIFY(input, 12000, 50)) return -1;
if (VERIFY(input, 15000, 50)) return -1;
if (VERIFY(input, 20000, 50)) return -1;
if (VERIFY(input, 25000, 50)) return -1;
if (VERIFY(input, 40000, 50)) return -1;
if (VERIFY(input, 50000, 50)) return -1;
if (VERIFY(input, 75000, 50)) return -1;
if (VERIFY(input, 100000, 50)) return -1;
if (VERIFY(input, 120000, 50)) return -1;
if (VERIFY(input, 150000, 50)) return -1;
if (VERIFY(input, 200000, 50)) return -1;
if (VERIFY(input, 250000, 50)) return -1;
if (VERIFY(input, 400000, 50)) return -1;
if (VERIFY(input, 500000, 50)) return -1;
if (VERIFY(input, 750000, 50)) return -1;
if (VERIFY(input, 1000000, 50)) return -1;
if (VERIFY(input, 1200000, 50)) return -1;
if (VERIFY(input, 1500000, 50)) return -1;
if (VERIFY(input, 2000000, 50)) return -1;
if (VERIFY(input, 2500000, 50)) return -1;
if (VERIFY(input, 4000000, 50)) return -1;
if (VERIFY(input, 5000000, 50)) return -1;
if (VERIFY(input, 7500000, 50)) return -1;
if (VERIFY(input, 10000000, 50)) return -1;
if (VERIFY(input, 12000000, 50)) return -1;
if (VERIFY(input, 15000000, 50)) return -1;
if (VERIFY(input, 20000000, 50)) return -1;
if (VERIFY(input, 25000000, 50)) return -1;
if (VERIFY(input, 40000000, 50)) return -1;
if (VERIFY(input, 50000000, 50)) return -1;
if (VERIFY(input, 75000000, 50)) return -1;
if (VERIFY(input, 100000000, 50)) return -1;
if (VERIFY(input, 120000000, 50)) return -1;
if (VERIFY(input, 150000000, 50)) return -1;
if (VERIFY(input, 200000000, 50)) return -1;
if (VERIFY(input, 250000000, 50)) return -1;
if (VERIFY(input, 400000000, 50)) return -1;
if (VERIFY(input, 500000000, 50)) return -1;
if (VERIFY(input, 750000000, 50)) return -1;
if (VERIFY(input, 1000000000, 50)) return -1;
if (VERIFY(input, 1200000000, 50)) return -1;
if (VERIFY(input, 1500000000, 50)) return -1;
if (VERIFY(input, 2000000000, 50)) return -1;
cerr << " [O] Great, all passed" << endl;
return 0;
}