Răspuns :
Răspuns:
#include <iostream>
#include <algorithm>
using namespace std;
int n,x,y,z, d[100],k,aux,i;
int main()
{
cout << "n="; cin >> n;
aux=n;
for (i=1; i*i<n; ++i)
if (n%i==0)
{
d[k++]=i; d[k++]=n/i;
}
if (i*i==n) d[k++]=i;
sort(d,d+k);
bool exista=0;
for (int i=0; i<k-2; ++i)
{
x=d[i];
for (int j=i+1; j<k-1; ++j)
{
y=d[j];
for (int t=j+1; t<k; ++t)
{
z=d[t];
if (x+y+z==n)
{
exista=1;
cout << x << " " << y << " " << z << "\n";
break;
}
else
{
if (x+y+z>n) break;
}
}
}
}
if (!exista) cout << "nu exista";
}
Explicație:
:))) am avut interes să realizez anume această variantă (algoritm):
am plasat toţi divizorii numărului n într-un vector d, pe care l-am sortat crescător. Am folosit metode efective de determinae a divizorilor şi de sortare a vectorului. Parcurgem vectorul de divizori şi căutăm tripletul (x,y,z)
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.