Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.69 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int recur(int n, int m, int k, int prevsum, int prevprod) {
  5. if (m <= 0 || prevprod >= n) return 0;
  6. int sum = prevsum + k, prod = prevprod * k, rem = (sum + m - 1) - prod;
  7. int count = (rem >= 0 && prevprod > 1 && rem % (prevprod - 1) == 0);
  8. for (; sum <= 2 * n && prod < n; ++k, ++sum, prod += prevprod) count += recur(n, m - 1, k, sum, prod);
  9. return count;
  10. }
  11.  
  12. int a(int n) {
  13. if (n <= 0) return 0;
  14. if (n == 1) return -1;
  15. return recur(n, n, 2, 0, 1) + (n == 2);
  16. }
  17.  
  18. int main(int argc, char **argv) {
  19. if (argc < 2) return 1;
  20. int limit = atoi(argv[1]);
  21. for (int i = 2; i <= limit; ++i) printf("%d %d\n", i, a(i));
  22. return 0;
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement