Mathématiques

Question

Combien de numéros entiers sont entre 1000 et 9999 qui suit
ces conditions (indépendants entre eux):
1. La somme de ses chiffres est exactement 9.
2. La somme de ses chiffres est exactement neuf et tous sont différents de 0.
3. Pour être impair et a tous les chiffres differents.
4. Tout de ses chiffres est 9.

URGENT !!!

1 Réponse

  • Bonjour,

    J'explique le 1 et le 4:
    4: il existe uniquement le nombre 9999.=>1
    1:
    On forme les naturels dont la somme des chiffres est 9:
    commençant par 1 :
    1008,1017,1026,1035,1044,...,1080 soit 9 nombres
    1107,1116,1125,1134,...1170 soit 8 nombres
    1206,1215,1224,...,1260 soit 7 nombres
    1305,...1350 soit 6 nombres
    1404,...1440 soit 5 nombres
    1503,...1530 soit 4 nombres
    1602,1611,1620 soit 3 nombres
    1701,1710 soit 2 nombres
    1800 soit 1 nombres
    au total : 9+8+..+1=(9+1)*9/2=45
    commençant par 2 :
    2007,2016,...,2070 soit 8 nombres
    21xx : 7 nombres
    au total: 8+7+6+...+1=(8+1)*8/2=36
    commençant par 2 :  =>28
    ...
    Au final 45+36+28+21+15+10+6+3+1=165
    En réalité, j'ai écrit un programme:
    CONST Faux = 0 = 1
    CONST Vrai = NOT (Faux)
    CONST b1 = 1000
    CONST b2 = 9999

    DIM i AS INTEGER, j AS INTEGER
    DIM nb(4) AS LONG, t(4) AS INTEGER
    FOR i = 1 TO n: nb(i) = 0: NEXT i
    FOR i = b1 TO b2
        CALL Test(i, t())
        FOR j = 1 TO 4
            IF t(j) THEN nb(j) = nb(j) + 1
        NEXT j
    NEXT i
    FOR i = 1 TO 4: PRINT nb(i),: NEXT i
    PRINT
    END

    FUNCTION Test_1% (p AS STRING)
    DIM ret AS INTEGER, i AS INTEGER, s AS INTEGER, x AS INTEGER
    ret = Faux
    s = 0
    FOR i = 1 TO LEN(p)
        x = VAL(MID$(p, i, 1))
        s = s + x
    NEXT i
    IF s = 9 THEN ret = Vrai
    Test_1% = ret
    END FUNCTION

    FUNCTION Diff% (p AS STRING)
    DIM c(9) AS INTEGER, i AS INTEGER, x AS INTEGER, ret AS INTEGER
    ret = Vrai
    FOR i = 1 TO 9: c(i) = 0: NEXT i
    FOR i = 1 TO LEN(p)
        x = VAL(MID$(p, i, 1))
        c(x) = c(x) + 1
        IF c(x) > 1 THEN
            ret = Faux
            EXIT FOR
        END IF
    NEXT i
    Diff% = ret
    END FUNCTION


    FUNCTION Test_2% (p AS STRING, p1 AS INTEGER)
    DIM ret AS INTEGER
    ret = Faux
    IF p1 THEN
        IF Diff%(p) THEN ret = Vrai
    END IF
    Test_2% = ret
    END FUNCTION


    FUNCTION Test_3% (p AS STRING)
    DIM ret AS INTEGER, x AS INTEGER
    ret = Faux
    x = VAL(RIGHT$(p, 1))
    IF x MOD 2 = 1 THEN
        IF Diff%(p) THEN ret = Vrai
    END IF
    Test_3% = ret
    END FUNCTION

    FUNCTION Test_4% (p AS STRING)
    DIM ret AS INTEGER, neuf AS STRING
    ret = Faux
    neuf = STRING$(LEN(p), "9")
    IF p = neuf THEN ret = Vrai
    Test_4% = ret
    END FUNCTION



    SUB Test (p AS INTEGER, Arr() AS INTEGER)
    DIM a AS STRING
    a = LTRIM$(STR$(p))
    Arr(1) = Test_1%(a)
    Arr(2) = Test_2%(a, Arr(1))
    Arr(3) = Test_3%(a)
    Arr(4) = Test_4%(a)
    END SUB






Autres questions