csum.pike 427 B

1234567891011121314151617181920
  1. int main(int argc, array(string) argv) {
  2. write(num_paths((int)argv[1], (int)argv[2]) + "\n");
  3. }
  4. int num_paths(int startsum, int lastcoin) {
  5. if (startsum == 250) {
  6. return 1;
  7. }
  8. int paths = 0;
  9. foreach(({ 1, 2, 5, 10, 20, 50, 100, 200 }), int coin) {
  10. if (lastcoin >= coin && startsum <= 250 - coin) {
  11. paths += num_paths(startsum + coin, coin);
  12. }
  13. }
  14. return paths;
  15. }