#include int przestaw_calls = 0; int przestaw(int n) { przestaw_calls++; int r = n % 100; int a = r / 10; int b = r % 10; n = n / 100; if (n > 0) { return a + 10 * b + 100 * przestaw(n); } else { if (a > 0) { return a + 10 * b; } else { return b; } } } int main() { int test_values[] = {316498, 43657688, 154005710, 998877665}; int num_tests = sizeof(test_values) / sizeof(test_values[0]); printf("| n | Wykonanie funkcji przestaw | Liczba wywolan funkcji przestaw |\n"); printf("|---|---|---|\n"); for (int i = 0; i < num_tests; i++) { przestaw_calls = 0; int result = przestaw(test_values[i]); printf("| %d | %d | %d |\n", test_values[i], result, przestaw_calls); } // For the very large number 998877665544321, we need to use long long long long large_value = 998877665544321LL; przestaw_calls = 0; // We need a modified version for long long long long przestaw_ll(long long n) { przestaw_calls++; long long r = n % 100; long long a = r / 10; long long b = r % 10; n = n / 100; if (n > 0) { return a + 10 * b + 100 * przestaw_ll(n); } else { if (a > 0) { return a + 10 * b; } else { return b; } } } long long large_result = przestaw_ll(large_value); printf("| 998877665544321 | %lld | %d |\n", large_result, przestaw_calls); return 0; }