std::tuple<const unsigned long long int,int,int> DigitalRoot(const unsigned long long int digits, const int BASE = 10) { int x = SumDigits(digits,BASE); int ap = 1; while (x >= BASE) { x = SumDigits(x,BASE); ap++; } return std::make_tuple(digits,ap,x); }
int main(int argc, char* argv[]) { setlocale(LC_ALL, "Russian"); int upLimit = 1000; int i; int sumDig = 0; if (argc > 1) { bool err; upLimit = StringToInt(argv[1], err); if ((err) || (upLimit <= 1)) { printf("¬едены не корректыные параметры\n"); return 1; } } for (i = 1; i <= upLimit; i++) { sumDig = SumDigits(i); if (sumDig == 0) { continue; } if (i%sumDig == 0) { printf("%d ", i); } } printf("\n"); system("PAUSE"); return 0; }
void PrintSpecialNumbers(int upperBound) { for (int i = LOWER_BOUND; i <= upperBound; i++) { if (i % SumDigits(i) == 0) { printf("%4d ", i); } } printf("\n"); }
int main () { const int UPPER_BOUND = 1280; for (int number = 1; number <= UPPER_BOUND; number++) { if (number % SumDigits (number) == 0) { if (number != UPPER_BOUND && number > 1) { printf ("; "); } printf ("%d", number); } } printf (".\n\r"); return 0; }
char* SumCharsAndDigits(const char* str) { int sum = 0; char* sum_str = (char*)malloc(2 * sizeof(char)); char c; int digits_sum; /* Check allocation succeeded */ assert(sum_str != NULL); /* The sum's string is 1 character long. Mark its end. */ sum_str[1] = '\0'; while (*str != '\0') { c = *str; if (c >= 'a' && c <= 'z') { sum += c - 'a' + 1; } else if (c >= 'A' && c <= 'Z') { sum += c - 'A' + 1; } else if (c >= '0' && c <= '9') { sum += c - '0'; } str++; } /* Add the sum's digits together */ digits_sum = sum; do { digits_sum = SumDigits(digits_sum); } while (digits_sum >= 10); /* Return the sum's string representation */ sum_str[0] = digits_sum + '0'; return sum_str; }