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
|
#!/usr/bin/env python3
import sys, random, subprocess
ntimes=10000
maxn=1e100
def check(desc,x,y):
if x==y: return
print("{}: {} != {}".format(desc,x,y))
assert False
def gendata():
for _ in range(ntimes):
yield random.randint(-maxn,maxn), random.randint(-maxn,maxn)
def proctest():
proc=subprocess.Popen(["./main"],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=sys.stderr)
for (a,b) in gendata():
proc.stdin.write("div {} {}\n".format(a,b).encode("ascii"))
proc.stdin.write("mod {} {}\n".format(a,b).encode("ascii"))
proc.stdin.flush()
q=int(proc.stdout.readline())
r=int(proc.stdout.readline())
if r<0 or r>=abs(b) or a!=q*b+r:
print("Error: {} divmod {}".format(a,b))
print("Diff: {}".format(a-q*b-r))
sys.exit(1)
proc.kill()
def justprint():
for (a,b) in gendata():
print("div {} {}".format(a,b))
print("mod {} {}".format(a,b))
#justprint()
proctest()
|