Generated by Cython 0.10.3 on Thu Apr 9 16:52:02 2009
Raw output: _Users_dan__sage_sage_notebook_worksheets_skkudemo_2_code_sage4_spyx_0.c
1:
#if PY_MAJOR_VERSION < 3
return;
#else
return __pyx_m;
#endif
__pyx_L1_error:;
__Pyx_AddTraceback("_Users_dan__sage_sage_notebook_worksheets_skkudemo_2_code_sage4_spyx_0");
#if PY_MAJOR_VERSION >= 3
return NULL;
#endif
}
2: include "interrupt.pxi" # ctrl-c interrupt block support
3: include "stdsage.pxi" # ctrl-c interrupt block support
4:
5: include "cdefs.pxi"
6: def cybuying(coins, total):
static PyObject *__pyx_pf_70_Users_dan__sage_sage_notebook_worksheets_skkudemo_2_code_sage4_spyx_0_cybuying(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_70_Users_dan__sage_sage_notebook_worksheets_skkudemo_2_code_sage4_spyx_0_cybuying[] = "File: _Users_dan__sage_sage_notebook_worksheets_skkudemo_2_code_sage4_spyx_0.pyx (starting at line 6)";
static PyObject *__pyx_pf_70_Users_dan__sage_sage_notebook_worksheets_skkudemo_2_code_sage4_spyx_0_cybuying(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_coins = 0;
PyObject *__pyx_v_total = 0;
int __pyx_v_i;
int __pyx_v_j;
int __pyx_v_k;
int __pyx_v_coin;
PyObject *__pyx_v_vlist;
PyObject *__pyx_v__;
PyObject *__pyx_r;
static PyObject **__pyx_pyargnames[] = {&__pyx_kp_coins,&__pyx_kp_total,0};
__pyx_self = __pyx_self;
if (unlikely(__pyx_kwds)) {
PyObject* values[2] = {0,0};
Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 0:
values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_coins);
if (likely(values[0])) kw_args--;
else goto __pyx_L5_argtuple_error;
case 1:
values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_total);
if (likely(values[1])) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("cybuying", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "cybuying") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
__pyx_v_coins = values[0];
__pyx_v_total = values[1];
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
} else {
__pyx_v_coins = PyTuple_GET_ITEM(__pyx_args, 0);
__pyx_v_total = PyTuple_GET_ITEM(__pyx_args, 1);
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("cybuying", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("_Users_dan__sage_sage_notebook_worksheets_skkudemo_2_code_sage4_spyx_0.cybuying");
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_v_vlist = Py_None; Py_INCREF(Py_None);
__pyx_v__ = Py_None; Py_INCREF(Py_None);
7: cdef int i, j, k, coin
8: vlist = [ [0] * len(coins) for _ in range(total + 1) ]
__pyx_1 = PyList_New(0); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_3 = __pyx_v_total;
Py_INCREF(__pyx_3);
__pyx_t_1 = PyNumber_Add(__pyx_3, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
Py_DECREF(__pyx_3); __pyx_3 = 0;
__pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
PyTuple_SET_ITEM(__pyx_3, 0, __pyx_t_1);
__pyx_t_1 = 0;
__pyx_4 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_3), NULL); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
if (PyList_CheckExact(__pyx_4) || PyTuple_CheckExact(__pyx_4)) {
__pyx_2 = 0; __pyx_3 = __pyx_4; Py_INCREF(__pyx_3);
} else {
__pyx_2 = -1; __pyx_3 = PyObject_GetIter(__pyx_4); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
Py_DECREF(__pyx_4); __pyx_4 = 0;
for (;;) {
if (likely(PyList_CheckExact(__pyx_3))) {
if (__pyx_2 >= PyList_GET_SIZE(__pyx_3)) break;
__pyx_4 = PyList_GET_ITEM(__pyx_3, __pyx_2); Py_INCREF(__pyx_4); __pyx_2++;
} else if (likely(PyTuple_CheckExact(__pyx_3))) {
if (__pyx_2 >= PyTuple_GET_SIZE(__pyx_3)) break;
__pyx_4 = PyTuple_GET_ITEM(__pyx_3, __pyx_2); Py_INCREF(__pyx_4); __pyx_2++;
} else {
__pyx_4 = PyIter_Next(__pyx_3);
if (!__pyx_4) {
if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
break;
}
}
Py_DECREF(__pyx_v__);
__pyx_v__ = __pyx_4;
__pyx_4 = 0;
__pyx_4 = PyList_New(1); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
Py_INCREF(__pyx_int_0);
PyList_SET_ITEM(__pyx_4, 0, __pyx_int_0);
__pyx_5 = PyObject_Length(__pyx_v_coins); if (unlikely(__pyx_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_6 = PyInt_FromSsize_t(__pyx_5); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_1 = PyNumber_Multiply(((PyObject *)__pyx_4), __pyx_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
Py_DECREF(((PyObject *)__pyx_4)); __pyx_4 = 0;
Py_DECREF(__pyx_6); __pyx_6 = 0;
__pyx_7 = PyList_Append(__pyx_1, (PyObject*)__pyx_t_1); if (unlikely(__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
Py_DECREF(__pyx_3); __pyx_3 = 0;
Py_DECREF(__pyx_v_vlist);
__pyx_v_vlist = ((PyObject *)__pyx_1);
__pyx_1 = 0;
9: for i in range(total + 1):
__pyx_4 = __pyx_v_total;
Py_INCREF(__pyx_4);
__pyx_t_1 = PyNumber_Add(__pyx_4, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
Py_DECREF(__pyx_4); __pyx_4 = 0;
__pyx_7 = __pyx_PyInt_int(__pyx_t_1); if (unlikely((__pyx_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
for (__pyx_v_i = 0; __pyx_v_i < __pyx_7; __pyx_v_i+=1) {
10: for j, coin in enumerate(coins):
__pyx_6 = PyTuple_New(1); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
Py_INCREF(__pyx_v_coins);
PyTuple_SET_ITEM(__pyx_6, 0, __pyx_v_coins);
__pyx_3 = PyObject_Call(__pyx_builtin_enumerate, ((PyObject *)__pyx_6), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
Py_DECREF(((PyObject *)__pyx_6)); __pyx_6 = 0;
if (PyList_CheckExact(__pyx_3) || PyTuple_CheckExact(__pyx_3)) {
__pyx_5 = 0; __pyx_1 = __pyx_3; Py_INCREF(__pyx_1);
} else {
__pyx_5 = -1; __pyx_1 = PyObject_GetIter(__pyx_3); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
Py_DECREF(__pyx_3); __pyx_3 = 0;
for (;;) {
if (likely(PyList_CheckExact(__pyx_1))) {
if (__pyx_5 >= PyList_GET_SIZE(__pyx_1)) break;
__pyx_4 = PyList_GET_ITEM(__pyx_1, __pyx_5); Py_INCREF(__pyx_4); __pyx_5++;
} else if (likely(PyTuple_CheckExact(__pyx_1))) {
if (__pyx_5 >= PyTuple_GET_SIZE(__pyx_1)) break;
__pyx_4 = PyTuple_GET_ITEM(__pyx_1, __pyx_5); Py_INCREF(__pyx_4); __pyx_5++;
} else {
__pyx_4 = PyIter_Next(__pyx_1);
if (!__pyx_4) {
if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
break;
}
}
if (PyTuple_CheckExact(__pyx_4) && PyTuple_GET_SIZE(__pyx_4) == 2) {
PyObject* tuple = __pyx_4;
__pyx_3 = PyTuple_GET_ITEM(tuple, 0);
Py_INCREF(__pyx_3);
__pyx_8 = __pyx_PyInt_int(__pyx_3); if (unlikely((__pyx_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
Py_DECREF(__pyx_3); __pyx_3 = 0;
__pyx_v_j = __pyx_8;
__pyx_3 = PyTuple_GET_ITEM(tuple, 1);
Py_INCREF(__pyx_3);
__pyx_8 = __pyx_PyInt_int(__pyx_3); if (unlikely((__pyx_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
Py_DECREF(__pyx_3); __pyx_3 = 0;
__pyx_v_coin = __pyx_8;
Py_DECREF(__pyx_4); __pyx_4 = 0;
}
else {
__pyx_6 = PyObject_GetIter(__pyx_4); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
Py_DECREF(__pyx_4); __pyx_4 = 0;
__pyx_3 = __Pyx_UnpackItem(__pyx_6, 0); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_8 = __pyx_PyInt_int(__pyx_3); if (unlikely((__pyx_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
Py_DECREF(__pyx_3); __pyx_3 = 0;
__pyx_v_j = __pyx_8;
__pyx_3 = __Pyx_UnpackItem(__pyx_6, 1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_8 = __pyx_PyInt_int(__pyx_3); if (unlikely((__pyx_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
Py_DECREF(__pyx_3); __pyx_3 = 0;
__pyx_v_coin = __pyx_8;
if (__Pyx_EndUnpack(__pyx_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
Py_DECREF(__pyx_6); __pyx_6 = 0;
}
11: if j == 0:
__pyx_9 = (__pyx_v_j == 0);
if (__pyx_9) {
12: if i % coin == 0:
__pyx_9 = ((__pyx_v_i % __pyx_v_coin) == 0);
if (__pyx_9) {
13: vlist[i][j] = 1
__pyx_3 = __Pyx_GetItemInt(__pyx_v_vlist, __pyx_v_i, 0); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__Pyx_SetItemInt(__pyx_3, __pyx_v_j, __pyx_int_1, 0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
Py_DECREF(__pyx_3); __pyx_3 = 0;
goto __pyx_L13;
}
__pyx_L13:;
goto __pyx_L12;
}
/*else*/ {
14: else:
15: k = 0
__pyx_v_k = 0;
16: while i - k >= 0:
while (1) {
__pyx_9 = ((__pyx_v_i - __pyx_v_k) >= 0);
if (!__pyx_9) break;
17: vlist[i][j] += vlist[i - k][j - 1]
__pyx_8 = (__pyx_v_i - __pyx_v_k);
__pyx_6 = __Pyx_GetItemInt(__pyx_v_vlist, __pyx_8, 0); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_10 = (__pyx_v_j - 1);
__pyx_3 = __Pyx_GetItemInt(__pyx_6, __pyx_10, 0); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
Py_DECREF(__pyx_6); __pyx_6 = 0;
__pyx_6 = __Pyx_GetItemInt(__pyx_v_vlist, __pyx_v_i, 0); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_11 = __Pyx_GetItemInt(__pyx_6, __pyx_v_j, 0); if (!__pyx_11) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_4 = PyNumber_InPlaceAdd(__pyx_11, __pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
Py_DECREF(__pyx_3); __pyx_3 = 0;
Py_DECREF(__pyx_11); __pyx_11 = 0;
if (__Pyx_SetItemInt(__pyx_6, __pyx_v_j, __pyx_4, 0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
Py_DECREF(__pyx_4); __pyx_4 = 0;
Py_DECREF(__pyx_6); __pyx_6 = 0;
18: k += coin
__pyx_v_k += __pyx_v_coin;
}
}
__pyx_L12:;
}
Py_DECREF(__pyx_1); __pyx_1 = 0;
}
19: return vlist[total][len(coins) - 1]
__pyx_3 = PyObject_GetItem(__pyx_v_vlist, __pyx_v_total); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_2 = PyObject_Length(__pyx_v_coins); if (unlikely(__pyx_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_5 = (__pyx_2 - 1);
__pyx_11 = __Pyx_GetItemInt(__pyx_3, __pyx_5, 0); if (!__pyx_11) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
Py_DECREF(__pyx_3); __pyx_3 = 0;
__pyx_r = __pyx_11;
__pyx_11 = 0;
goto __pyx_L0;
__pyx_r = Py_None; Py_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
Py_XDECREF(__pyx_1);
Py_XDECREF(__pyx_3);
Py_XDECREF(__pyx_4);
Py_XDECREF(__pyx_6);
Py_XDECREF(__pyx_11);
__Pyx_AddTraceback("_Users_dan__sage_sage_notebook_worksheets_skkudemo_2_code_sage4_spyx_0.cybuying");
__pyx_r = NULL;
__pyx_L0:;
Py_DECREF(__pyx_v_vlist);
Py_DECREF(__pyx_v__);
return __pyx_r;
}