Răspuns :
int a,b;
cin >> a >> b;
if(a%b == 0){
cout << "Da";
}else{cout <<"Nu";}
/*Ca sa se poata scrie trebuie sa fie divizibile deoarece inmultirea reprezinta adunari repetitive*/
cin >> a >> b;
if(a%b == 0){
cout << "Da";
}else{cout <<"Nu";}
/*Ca sa se poata scrie trebuie sa fie divizibile deoarece inmultirea reprezinta adunari repetitive*/
Bun pai, folosim putin mate:
ca un nr a sa se scrie ca suma de b nr naturale consecutive inseamna ca:
Exista un k astfel incat:
(k+1) + (k+2) + (k+3) + ... + (k+b) = a
Acum, observam ca avem exact b numere consecutive si toate sunt mai mari decat k, asa ca putem desface parantezele si scoatem cei b de k in fata:
b*k + (1+2+3+...+b) = a
Acum, stim ca:
1+2+3+...+b = [tex] \frac{b(b+1)}{2} [/tex]
Deci avem:
[tex]b*k+\frac{b(b+1)}{2} = a [/tex]
Adica:
[tex]b*k = a - \frac{b(b+1)}{2}[/tex]
Adica:
[tex]k = \frac{a - \frac{b(b+1)}{2}}{b}[/tex]
Ala ar fi k-ul tau, dar ai o singura problema, e posibil sa nu iti dea nr intreg. Daca nu iti da k nr intreg atunci evident nu poate a sa fie scris ca suma de nr naturale consecutive.
Asa ca sfatul meu este sa iti declari si a, si b, si k ca si nr reale, adica float, nu int, si la sfarsit, dupa ce ai aflat k, sa verifici daca k este nr intreg sau nu. Si asta o faci asa:
if (k == (int)k)
Treaba aia cu int se numeste cast si se face la facultate tehnic, practic e ceva extrem de simplu, ii "soptesti" programului in c++ ca vrei sa se "prefaca" ca k e int, nu float, pentru calculul ala, DOAR pt calculul ala.
ca un nr a sa se scrie ca suma de b nr naturale consecutive inseamna ca:
Exista un k astfel incat:
(k+1) + (k+2) + (k+3) + ... + (k+b) = a
Acum, observam ca avem exact b numere consecutive si toate sunt mai mari decat k, asa ca putem desface parantezele si scoatem cei b de k in fata:
b*k + (1+2+3+...+b) = a
Acum, stim ca:
1+2+3+...+b = [tex] \frac{b(b+1)}{2} [/tex]
Deci avem:
[tex]b*k+\frac{b(b+1)}{2} = a [/tex]
Adica:
[tex]b*k = a - \frac{b(b+1)}{2}[/tex]
Adica:
[tex]k = \frac{a - \frac{b(b+1)}{2}}{b}[/tex]
Ala ar fi k-ul tau, dar ai o singura problema, e posibil sa nu iti dea nr intreg. Daca nu iti da k nr intreg atunci evident nu poate a sa fie scris ca suma de nr naturale consecutive.
Asa ca sfatul meu este sa iti declari si a, si b, si k ca si nr reale, adica float, nu int, si la sfarsit, dupa ce ai aflat k, sa verifici daca k este nr intreg sau nu. Si asta o faci asa:
if (k == (int)k)
Treaba aia cu int se numeste cast si se face la facultate tehnic, practic e ceva extrem de simplu, ii "soptesti" programului in c++ ca vrei sa se "prefaca" ca k e int, nu float, pentru calculul ala, DOAR pt calculul ala.
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile și inspiraționale. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, suntem aici pentru a vă ajuta. Ne face plăcere să vă revedem și vă invităm să adăugați site-ul nostru la favorite pentru acces rapid!