josiftepe

Untitled

Dec 22nd, 2020
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.46 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int broj_na_deliteli(int N, int brojac) {
  5.     if(brojac == N) {
  6.         return 1;
  7.     }
  8.     if(N % brojac == 0) { // brojac e delitel na N
  9.         return broj_na_deliteli(N, brojac + 1) + 1; // sme nasle uste eden delitel
  10.     }
  11.     else {
  12.         return broj_na_deliteli(N, brojac + 1) + 0; // ne sme nasle uste eden delitel
  13.     }
  14. }
  15. int dali_e_k_deliv(int N, int brojac) {
  16.     if(brojac == N) {
  17.         return 1; // brojot e garantirano k-deliv
  18.     }
  19.     int broj_na_deliteli_na_N = broj_na_deliteli(N, 1);
  20.     int broj_na_deliltei_na_brojac = broj_na_deliteli(brojac, 1);
  21.     if(broj_na_deliteli_na_N <= broj_na_deliltei_na_brojac) {
  22.         return 0;
  23.     }
  24.     return dali_e_k_deliv(N, brojac + 1);
  25. }
  26. int max(int a, int b) { // vraka pogolem broj megju a i b
  27.     if(a > b) {
  28.         return a;
  29.     }
  30.     return b;
  31. }
  32. int sum_od_a_do_b(int brojac, int b, int k) {
  33.     if(brojac > b) {
  34.         return 0;
  35.     }
  36.     if(dali_e_k_deliv(brojac, max(brojac - k, 1)) == 1) { // proverka dali brojot e k-deliv
  37.         return sum_od_a_do_b(brojac + 1, b, k) + brojac;
  38.     }
  39.     else {
  40.        return sum_od_a_do_b(brojac + 1, b, k);
  41.  
  42.     }
  43.    
  44. }
  45. // [a, b]
  46. // [a+1, a+2, a+3, ... a+x; a + x = b]
  47. int main()
  48. {
  49.     int A, B; // opsegot pomegju A i B
  50.     int k; // k-deliv, odnosno site broevi N - 1, N - 2, .. , N  - K
  51.     scanf("%d%d%d", &A, &B, &k);
  52.     printf("%d\n", sum_od_a_do_b(A, B, k));
  53.     return 0;
  54. }
  55.  
Advertisement
Add Comment
Please, Sign In to add comment