Numere alternative sunt numere în care toate cifrele alternează între par și impar. De exemplu: 2703 și 7230 sunt numere alternative, dar 2730 nu este „t.
Numerele sunt foarte alternante atunci când numărul dublu este și un număr alternativ, de exemplu 3816 este foarte alternativ, deoarece 7632 este și un număr alternativ.
Întrebarea dvs. este: câte numere de 4 cifre sunt foarte alternante? (numărul nu poate începe cu unul sau mai multe zerouri)
Desigur, această problemă poate fi rezolvată prin programare, dar poate fi rezolvată și matematic! Noroc!
NB: Nu am venit cu acest puzzle eu însumi, face parte din olimpiada olandeză de matematică, vezi acest PDF
Comentarii
o listă completă de numere foarte foarte alternante sub 10000: 3
, 9
, 18
, 109
, 309
, 418
, 818
, 909
, 1818
. Dintre acestea, numai 9
, 109
și 909
sunt foarte foarte fost alternativ. ' sunt destul de sigur că este ' imposibil să găsesc unul care să ' să aibă cinci niveluri de foarte alternativ.
Răspuns
Există un număr de astfel de numere
70
Când dublați un număr, o cifră a rezultatului este chiar dacă și numai dacă cifra către dreapta nu se purta.
Prin urmare, $ 2x $ alternează dacă și numai dacă cifrele $ x $ sunt $ LHLH $, unde $ L \ in \ {0,1,2,3 , 4 \} $ și $ H \ în \ {5,6,7,8,9 \} $.
(Ca o notă laterală, aceasta implică faptul că dacă $ x $ este foarte alternativ, atunci $ 2x $ va fi în continuare un număr din patru cifre, astfel încât $ x < 5000 $ în mod necesar).
Știm că dacă $ x $ alternează atunci când arată ca OEOE sau EOEO. Pentru ca $ x $ să fie foarte alternativ, trebuie să fie și $ LHLH $, deci să numărăm numărul de modalități de a îndeplini ambele constrângeri.
-
OEOE
: Fiecare număr impar trebuie să fie scăzut, ceea ce înseamnă că fiecare are 1 $ sau 3 $. Fiecare chiar trebuie să fie ridicat, deci este de 6 $ sau 8 $. Există două opțiuni pentru fiecare cifră pentru un total de $ 2 \ cdot2 \ cdot2 \ cdot2 = 16 $ posibilități.
-
EOEO : acum parul este scăzut (0,2 $ sau 4 $) și cotele sunt mari (5,7 $ sau 9 $). Există trei opțiuni pentru fiecare cifră, cu excepția faptului că prima cifră nu poate fi zero, deci există posibilități de 2 $ \ cdot3 \ cdot3 \ cdot3 = 54 $.
Aceste două conturile se adaugă la răspunsul dorit.
Comentarii
- ' sunt cam pierdut în explicația dvs. . Ajung la LHLH, dar după aceea, poate ' m dens?
- Conform comentariilor de pe PO, dublul numărului alternativ poate fi mai mult de 4 cifre.
- @GentlePurpleRain Nu contează. ' nu contează. Un număr din cinci cifre trebuie să înceapă cu 1, dar ultima sa cifră trebuie să fie pară, deci nu poate ' t alterna.
- @f ' ' da, dar niciun număr de 5 cifre nu face tăierea oricum
- @mikeearnest a adăugat un pic la răspunsul dvs. Nu ezitați să reveniți dacă nu ' îmi place
Răspuns
Răspunsul r este
70
Am făcut un număr manual. Încerc încă să găsesc o soluție matematică.
Comentarii
- Îmi ' îmi pare rău, că ' nu este răspunsul. Cum ați ajuns la acest răspuns?
- @xander verifică cea mai recentă editare a mea
- Îmi pare rău, dar nu sunt răspunsul corect. ' / li>
- Așteptați, văd ce am greșit, așteptați
- @xander Ce zici acum?
Răspunde
La naiba am început această forță brută înainte de răspunsuri și am primit
70
VBA
O logică mai bună pentru această rută ar fi fost
if (one mod 2 = three mod 2) and (two mod 2 = four mod 2) then if one mod 2 <> two mod 2 then counter increase
Răspuns
Iată-ne, forță brută din nou!
Răspunsul este, așa cum sa subliniat în alte răspunsuri:
70
Puteți verifica JSFiddle pentru codul sursă și lista completă a numerelor foarte alternative din 4 cifre.
Răspuns
Răspunsul corect este:
70
#AnubhavBalodhi, puzzling.stackexchange,26036, 1/2/16 2341 hrs E=["0","2","4","6","8"] O=["1","3","5","7","9"] ans=0 alters=[] def Alt(num): N=str(num) if len(N)<5: #4 digit if (N[0] in E and N[1] in O and N[2] in E and N[3] in O) or (N[0] in O and N[1] in E and N[2] in O and N[3] in E): alters.append(num) else: #5 digit if (N[0] in E and N[1] in O and N[2] in E and N[3] in O and N[4] in E ) or (N[0] in O and N[1] in E and N[2] in O and N[3] in E and N[4] in O): alters.append(num) for num in range(1000,10**5): Alt(num) #print(num) print(len(alters)) for numb in alters: if numb<9999 and numb*2 in alters: #if the number in alternating list is of 4 digits, and its double is also in the list. print(numb) ans+=1 print("ans is %d" %(ans))
1818
, care se dublează la3636
și apoi din nou la7272
. S-ar putea să fie mai multe dacă permiteți ca dublul și dublul-dublu să fie de 5 cifre …