Двојке и тројке дељиве са 3

Pitanje ili opis problema
Program radi, medjutim izvrsava se sporo zbog upotrebe 3 for petlje. Da li moze neki predlog resenja?

#define _USE_MATH_DEFINES

#include
#include
#include
#include<math.h>
#include
#include
#include
#include<conio.h>
using namespace std;

int main() {
int n;
int x;
int y=0;
int z = 0;
vector a;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> x;
a.push_back(x);
}
for (int i = 0; i < a.size(); i++) {
for (int j = i+1; j < a.size(); j++) {
if ((a[i] + a[j]) % 3 == 0) y = y + 1;
for (int k = j + 1; k < a.size(); k++) {
if ((a[i] + a[j] + a[k]) % 3 == 0) y = y + 1;
}
}
}
cout << y;
return 0;
}

https://petlja.org/biblioteka/r/Zbirka2/dvojke_i_trojke_deljive_sa_3

Cuvas tri varijable u kojima brojis koliko je brojeva deljivo sa 3, koliko njih daje ostatak 1 pri deljenju sa 3 i koliko njih daje ostatak 2 pri deljenju sa 3. Onda ti je za dva elementa ili oba daju ostatak 0 pri deljenju sa tri ili jedan daje ostatak 1, drugi ostatak 2, slicno radis i za 3 broja.

1 Like