Răspuns :
Răspuns:
#include <iostream>
using namespace std;
int main(){
int a,b;
cin >> a >> b;
int c,d,e,f,s,t;
c = b - a + 1; // c - numarul de numere in intervalul [a,b]
// d - cel mai mic multiplu de 3 din interval
if((t=a % 3, t) != 0)//t-variabila temporara cu restul impartirii lui a la 3.
d = a - t + 3;
else d = a;
// e - cel mai mare multiplu de 3 din interval
e = b - b % 3;
// f - numarul de multipli de 3 din interval
f = (e - d) / 3 + 1;
// s - suma ceruta
s = (c*(a+b))/2 - f*(d+e);
cout << s;
}
Explicație:
In primul rand, se observa ca pot aduna toate numerele din interval si apoi scadea dublul sumei multiplilor de 3, metoda de lucru care duce la acelasi rezultat.
Reamintim formula pentru suma unei progresii aritmetice:
[tex]S_n = \frac{n(a_1 + a_n)}{2}[/tex]
Avem in vedere 2 progresii aritmetice, [tex](a_n)_{n \geq 1}[/tex], cu toate numerele, si [tex](b_n)_{n\geq 1}[/tex], cu multiplii de 3, in care:
[tex] a_1 = \textrm{a-ul citit}, b_1 = \textrm{primul multiplu de 3 din interval}\\a_r = 1 = \textrm{ratia progresiei a}\\ b_r = 3 = \textrm{ratia progresiei b}[/tex]
[tex] d = b_1 = \begin{cases}a,\quad\quad\quad\quad\quad\quad\text{daca } a \in M_3}\\a+3-a\%3,\quad \text{daca } a \notin M_3\end{cases}[/tex]
Ultimul multiplu de 3 din interval se poate afla daca este scazut din b restul impartirii sale la 3.
[tex] e = b - b \% 3[/tex]
Numarul total de elemente de la a la b:
[tex] c = b - a + 1[/tex]
Numarul total de multiplii de 3:
[tex] f = \frac{e - d}{3} + 1[/tex]
Si in final, sumele:
[tex]\textrm{Pentru progresia a: }\\\\S_c = \frac{c\cdot (a+b)}{2}\\\\\textrm{Pentru progresia b:}\\\\ S_f = \frac{f\cdot (d+e)}{2}\\\\\textrm{Acum o scadem pe a 2-a de 2 ori din prima pentru a afla suma ceruta:}\\\\S = S_c - 2S_f\\\\S=\frac{c\cdot (a+b)}{2} - \cancel{2}\cdot \frac{f\cdot (d + e)}{\cancel{2}}\\\\ \boxed{S = \frac{c\cdot (a+b)}{2} - f\cdot (d+e)}[/tex]
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!