fork download
  1. #ifdef _MSC_VER
  2. # pragma warning(disable: 4996)
  3. #endif
  4.  
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <string.h>
  8. #include <assert.h>
  9.  
  10. #define UNUSED(x) (void)(x)
  11.  
  12. #define MAX_N 1000
  13.  
  14. int sum_multiples(int limit)
  15. {
  16. int i, sum;
  17. assert(limit >= 0);
  18.  
  19. sum = 0;
  20. for (i = 3; i < limit; i += 3)
  21. if (i % 15 != 0) sum += i;
  22.  
  23. for (i = 5; i < limit; i += 5)
  24. sum +=i;
  25.  
  26. return sum;
  27. }
  28.  
  29. int reverse_digits(int n)
  30. {
  31. int x;
  32.  
  33. x = 0;
  34. do
  35. {
  36. x = (x * 10) + n % 10;
  37. } while (n /= 10);
  38. return x;
  39. }
  40.  
  41. int cmp_digits(const void *v1, const void *v2)
  42. {
  43. return *(int *)v1 - *(int *)v2;
  44. }
  45.  
  46. int sort_digits(int n)
  47. {
  48. size_t i, cnt;
  49. int c, digits[10];
  50.  
  51. i = cnt = 0;
  52. do
  53. {
  54. digits[i++] = n % 10;
  55. } while (n /= 10);
  56.  
  57. cnt = i;
  58. qsort(digits, cnt, sizeof(*digits), cmp_digits);
  59.  
  60. c = 0;
  61. for (i = 0; i < cnt; ++i)
  62. c = (c * 10) + digits[i];
  63.  
  64. return c;
  65. }
  66.  
  67. int main(int argc, const char *argv[])
  68. {
  69. unsigned int sum = sum_multiples(MAX_N);
  70. printf("sum = %d\n", sum);
  71. printf("reversed = %d\n", reverse_digits(sum));
  72. printf("sorted = %d\n", sort_digits(sum));
  73.  
  74. UNUSED(argc);
  75. UNUSED(argv);
  76. return 0;
  77. }
Success #stdin #stdout 0s 2160KB
stdin
Standard input is empty
stdout
sum = 233168
reversed = 861332
sorted = 123368