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

Cerința
Se dau numerele naturale a, b, c și d cu proprietatea că a < b < c < d. Să se determine câte numere naturale divizibile cu 3 sunt în reuniunea de intervale [a,b] ∪ [c,d].

Date de intrare
Programul citește de la tastatură numerele naturale a, b, c, d.

Date de ieșire
Programul va afișa pe ecran numărul de numere naturale divizibile cu 3 din [a,b] ∪ [c,d].

Restricții și precizări
2 ≤ a < b < c < d ≤ 2.000.000.000



Exemplu
Intrare

2 7 10 18
Ieșire

5
Explicație
Cele 5 numere naturale divizibile cu 3 din [2,7] ∪ [10,18] sunt 3, 6, 12, 15 și 18.

Salut! Va rog mult sa ma ajutati la aceasta problema. Nu reusesc sa o fac. Este problema #3928 de pe pbinfo!

Răspunsuri la întrebare

Răspuns de Sergetec
2

Salut!

Ai rezolvarea in C++ mai jos

#include <iostream>

using namespace std;

int main()

{

 int a, b, c, d, s1 = 0, s2 = 0;

 cin >> a >> b >> c >> d;

 s1 = b / 3 - (a - 1) / 3;

 s2 = d / 3 - (c - 1) / 3;

 cout << s1 + s2;

 return 0;

}

  • Explicatie:

Iterand de la a la b si de la c la d calculand numerele nu ne va intra in limita de timp, asadar folosim un algoritm eficient care suna cam asa:

Fie:

A = a * 3

B = b * 3

Numarul de numere divizibile cu 3 intre a si b va fi egal cu b - a

Exemplu:

A = 10

B = 70

atunci a = 3 si b = 23

Asadar numarul de numere divizibile cu 3 vor fi: 23 - 3 = 20


ciprian74: Multumesc!
Răspuns de andreidamian604
1

Explicație:

#include <iostream>

using namespace std;

int main()

{

int a, b, c, d;

cin >> a >> b >> c >> d;

cout << b / 3 - ( a - 1 ) / 3 + d / 3 - ( c - 1 ) / 3;

return 0;

}

o amărâtă de formula pe care n-ai cum sa o știi dinainte...

Alte întrebări interesante