1import sys
2
3
4def modobj(obj2, obj3):
5    """
6    >>> modobj(9,2)
7    1
8    >>> modobj('%d', 5)
9    '5'
10    >>> modobj(1, 0)  # doctest: +ELLIPSIS
11    Traceback (most recent call last):
12    ZeroDivisionError: integer division...
13    """
14    obj1 = obj2 % obj3
15    return obj1
16
17
18def mod_10_obj(int2):
19    """
20    >>> mod_10_obj(0)  # doctest: +ELLIPSIS
21    Traceback (most recent call last):
22    ZeroDivisionError: integer division...
23    >>> mod_10_obj(3)
24    1
25    """
26    return 10 % int2
27
28
29def mod_obj_10(int2):
30    """
31    >>> 0 % 10
32    0
33    >>> mod_obj_10(0)
34    0
35    >>> 1 % 10
36    1
37    >>> mod_obj_10(1)
38    1
39    >>> (-1) % 10
40    9
41    >>> mod_obj_10(-1)
42    9
43    >>> 9 % 10
44    9
45    >>> mod_obj_10(9)
46    9
47    >>> 10 % 10
48    0
49    >>> mod_obj_10(10)
50    0
51    >>> (-10) % 10
52    0
53    >>> mod_obj_10(-10)
54    0
55    >>> (-12) % 10
56    8
57    >>> mod_obj_10(-12)
58    8
59    >>> 10002 % 10
60    2
61    >>> mod_obj_10(10002)
62    2
63    >>> int((2**25) % 10)
64    2
65    >>> int(mod_obj_10(2**25))
66    2
67    >>> int((-2**25) % 10)
68    8
69    >>> int(mod_obj_10(-2**25))
70    8
71    >>> int((-2**31-1) % 10)
72    1
73    >>> int(mod_obj_10(int(-2**31-1)))
74    1
75    >>> int((2**50) % 10)
76    4
77    >>> int(mod_obj_10(2**50))
78    4
79    >>> int((-2**50) % 10)
80    6
81    >>> int(mod_obj_10(-2**50))
82    6
83    >>> int((-2**63-1) % 10)
84    1
85    >>> int(mod_obj_10(-2**63-1))
86    1
87    >>> int((2**200) % 10)
88    6
89    >>> int(mod_obj_10(2**200))
90    6
91    >>> int((-2**200) % 10)
92    4
93    >>> int(mod_obj_10(-2**200))
94    4
95    """
96    int1 = int2 % 10
97    return int1
98
99
100def mod_obj_17(int2):
101    """
102    >>> 0 % 17
103    0
104    >>> mod_obj_17(0)
105    0
106    >>> 1 % 17
107    1
108    >>> mod_obj_17(1)
109    1
110    >>> (-1) % 17
111    16
112    >>> mod_obj_17(-1)
113    16
114    >>> 9 % 17
115    9
116    >>> mod_obj_17(16)
117    16
118    >>> 17 % 17
119    0
120    >>> mod_obj_17(17)
121    0
122    >>> (-17) % 17
123    0
124    >>> mod_obj_17(-17)
125    0
126    >>> (-18) % 17
127    16
128    >>> mod_obj_17(-18)
129    16
130    >>> 10002 % 17
131    6
132    >>> mod_obj_17(10002)
133    6
134    >>> int((2**25) % 17)
135    2
136    >>> int(mod_obj_17(2**25))
137    2
138    >>> int((-2**25) % 17)
139    15
140    >>> int(mod_obj_17(-2**25))
141    15
142    >>> int((-2**31-1) % 17)
143    7
144    >>> int(mod_obj_17(int(-2**31-1)))
145    7
146    >>> int((2**50) % 17)
147    4
148    >>> int(mod_obj_17(2**50))
149    4
150    >>> int((-2**50) % 17)
151    13
152    >>> int(mod_obj_17(-2**50))
153    13
154    >>> int((-2**63-1) % 17)
155    7
156    >>> int(mod_obj_17(-2**63-1))
157    7
158    >>> int((2**200) % 17)
159    1
160    >>> int(mod_obj_17(2**200))
161    1
162    >>> int((-2**200) % 17)
163    16
164    >>> int(mod_obj_17(-2**200))
165    16
166    """
167    int1 = int2 % 17
168    return int1
169
170
171def mod_obj_m2(int2):
172    """
173    >>> 0 % -2
174    0
175    >>> mod_obj_m2(0)
176    0
177    >>> 1 % -2
178    -1
179    >>> mod_obj_m2(1)
180    -1
181    >>> 9 % -2
182    -1
183    >>> mod_obj_m2(9)
184    -1
185    """
186    int1 = int2 % -2
187    return int1
188
189
190def mod_obj_m2f(obj2):
191    """
192    >>> 0 % -2.0 == 0.0    # -0.0 in Py2.7+
193    True
194    >>> mod_obj_m2f(0)
195    -0.0
196    >>> 1 % -2.0
197    -1.0
198    >>> mod_obj_m2f(1)
199    -1.0
200    >>> 9 % -2.0
201    -1.0
202    >>> mod_obj_m2f(9)
203    -1.0
204    """
205    result = obj2 % -2.0
206    return result
207
208
209def modint(int int2, int int3):
210    """
211    >>> modint(9,2)
212    1
213    """
214    cdef int int1
215    int1 = int2 % int3
216    return int1
217
218
219def modptr():
220    """
221    >>> print(modptr() if sys.version_info[0] < 3 else 'spameggs')
222    spameggs
223    """
224    cdef char *str2, *str3
225    str2 = "spam%s"
226    str3 = "eggs"
227    obj1 = str2 % str3  # '%' operator doesn't work on byte strings in Py3
228    return obj1
229
230
231def mod_bigint(obj):
232    """
233    >>> print(mod_bigint(3316000000000))
234    319
235    """
236    result = obj % 999
237    return result
238