Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

In các số chỉ chứa chữ số 0 và 1 có tổng bằng N trong C

Bài toán

Cho số nguyên n, in các số chỉ gồm chữ số 0 và 1 (1, 10, 11, 100...) sao cho tổng bằng n.

Ví dụ

Input: 31 → Output: 10 10 10 1 (hoặc 10 10 11)
Input: 35 → Output: 10 10 1 1 1 1 11

Thuật toán tham lam

While n > 0:
    If n > 20 và n/10 > 0: in "10", n -= 10
    Else if n-11 == 0: in "11", n -= 11
    Else: in "1", n--

Mã nguồn C

#include <stdio.h>

void findNumbers(int n) {
    int a = n;
    while (a > 0) {
        if (a/10 > 0 && a > 20) {
            a -= 10; printf("10 ");
        } else if (a - 11 == 0) {
            a -= 11; printf("11 ");
        } else {
            printf("1 "); a--;
        }
    }
}

int main() {
    int N = 35;
    findNumbers(N);
    return 0;
}

Kết quả

10 10 1 1 1 1 11