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;
}