#include #include #include #include #include #include using namespace std; int num_of_divisors_of_x(int x, int i) { if(i > x) { return 0; } int divisor = 0; if(x % i == 0) { divisor = 1; } return num_of_divisors_of_x(x, i + 1) + divisor; } int k_deliv(int A, int B) { if(A > B) { return 0; } return max(num_of_divisors_of_x(A, 1), k_deliv(A + 1, B)); } // k_deliv(17, 23) = max(2, k_deliv(18, 23)) = max(2, 6) = 6 // k_deliv(18, 23) = max(6, k_deliv(19, 23)) = max(6, 6) = 6 // k_deliv(19, 23) = max(2, k_deliv(20, 23)) = max(2, 6) = 6 // k_deliv(20, 23) = max(6, k_deliv(21, 23)) = max(6, 4) = 6 // k_deliv(21, 23) = max(4, k_deliv(22, 23)) = max(4, 4) = 4 // k_deliv(22, 23) = max(4, k_deliv(23, 23)) = max(4, 2) = 4 // k_deliv(23, 23) = max(2, k_deliv(24, 23)) = max(2, 0) = 2 // k_deliv(24, 23) = 0 int sum(int A, int B, int K) { if(A > B) { return 0; } int div_A = num_of_divisors_of_x(A, 1); int div_K = k_deliv(max(1, A - K), A - 1); int suma = 0; if(div_A > div_K) { suma = A; } return sum(A + 1, B, K) + suma; } // div_A = 8 // k_deliv(17, 23) = 6 int main() { int A, B, K; cin >> A >> B >> K; cout << sum(A, B, K) << endl; // 24 return 0; }