Informatică, întrebare adresată de mneculea, 8 ani în urmă


am acest program:

cin >>a>>b;
S=0;
for(int n=a;n<=b;n++)
{ if(n%3==0)
S=S-n;
else
S=S+n;
}
cout <
Isi da seama cineva ce face acest program?
Inafara de faptul ca scade numerele divizibile cu 3 si le aduna pe restul din intervalul [a,b].
Cerinta propriu zisa era sa scriu programul fara structuri repetitive (while, for, do while).

de ex pt a=8, b=17 e raspunsul 53
Multumesc!


Utilizator anonim: Ți-am fost de ajutor? Să fac un răspuns mai complet?

Răspunsuri la întrebare

Răspuns de MichaelKing
0

Răspuns:

Calculeaza diferenta dintre suma numerelor intregi nedivizibile cu 3 si suma numerelor intregi divizibile cu 3 -  numere incluse in intervalul [a;b].

Se observa ca: (3k+1)+(3k+2)-(3k+3)=3k.

a poate fi de tipul: 3k, 3k+1,3k+2 (3 cazuri) si

b poate fi de tipul: 3p, 3p+1, 3p+2 (3 cazuri)

Deci poti rezolva totul cu if-uri imbricate (sau switch) -  sunt 3x3=9 cazuri.


CinevaFaraNume: Se poate face mult mai simplu daca folosim putina matematica (progresii aritmetice).
Alte întrebări interesante