int main(int argc, char* argv) { long long sum = 0; int digits[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; long long num = is_qualified(digits); if (num > 0) { //printf("qualified number = %lld\n", num); sum = sum + num; } int n = 9; int i = n; while (i > 0) { int prev = i - 1; if (digits[prev] < digits[i]) { for (int j = n; j >= i; j--) { if (digits[j] > digits[prev]) { swap(&digits[j], &digits[prev]); if (i < n) revert(digits, i, n); i = n; break; } } num = is_qualified(digits); if (num > 0) { //printf("qualified number = %lld\n", num); sum = sum + num; } } else { i--; } } printf("sum = %lld\n", sum); }
Symbol parse_symbol(char *token, Package pkg) { char *pkg_name, *sym_name; token = toupper_string(token); if (is_keyword_token(token)) return gen_keyword(token + 1); if (is_qualified(token, &pkg_name, &sym_name)) { Package pkg; pkg = find_package(pkg_name); return gen_symbol(sym_name, pkg); } else return gen_symbol(token, pkg); }