Informatică, întrebare adresată de mihai23478, 9 ani în urmă

Se dă un număr. Să se scrie, dacă este posibil, ca sumă de două numere consecutive. Exemple : Date de intrare 5 Date de ieşire 5=2+3 ; Date de intrare 6 Date de ieşire Nu se poate. c++ va rog mult

Răspunsuri la întrebare

Răspuns de Seckar
3
Aici folosim putin mate:

Daca avem un numar k, atunci urmatorul dupa k este k+1.

Adica k si k+1 sunt consecutive.

Acum sa adunam doua numere consecutive:

k + (k+1) = k + k + 1 = 2k+1

Buuuun, acum stim ca orice numar care merge scris ca suma de 2 nr. consecutive o sa fie de forma 2k+1.

Ceea ce inseamna ca daca noi verificam ca numarul este intr-adevar de forma 2k+1, atunci am aflat ca merge scris, si am aflat si acel k.

Pai, ce stim noi despre 2k+1? Stim ca este impart, pentru ca 2k e clar divizibil cu 2, deci par, iar daca la un numar par adaugi 1, devine impar saracutul.

Deci un numar e de forma 2k+1 daca e impar. Verificarea daca un nr e impar e banal de facut cu un if in C++.

Daca numarul nu e impar, atunci afisezi mesajul ala ca nu se poate.

Daca in schimb este impar, atunci trebuie sa gasesti acel k.

Si asta e simplu: numarul tau n este de forma 2k+1, daca scazi un 1 o sa ramai cu 2k, apoi daca imparti la 2, ramai direct cu k, si faci afisarea lui k si k+1 cum vrea inimioara ta.

Iti las si un exemplu ceva mai compact, il rafinezi tu cum vrei.

Spor!
Anexe:
Alte întrebări interesante