Buna!Trebuie sa fac acest algoritm si nu imi dau seama cum ,va rog mult de tot sa ma ajutati: Alcatuiti un algoritm in C++ in care se citeste un numar natural n. Sa se afiseze toate modalitatile de a-l descompune ca suma de numere naturale consecutive. Daca acest lucru nu este posibil, se va afisa mesajul „Imposibil”.
Exemplu: Numarul 15 se poate scrie ca urmatoarele sume: 1+2+3+4+5 , 4+5+6 sau 7+8. Numarul 8 nu poate fi scris ca suma de numere consecutive.
Răspunsuri la întrebare
Răspuns de
2
#include <iostream>
using namespace std;
int main()
{
int n, i, j, s = 0, k, p=0;
cin >> n;
for (i = 1; i <= n-1; i++)
{
for (j = i; j <= n-1 && s!=n; j++)
{
s = s + j;
if (s == n)
{
p = 1;
for (k = i; k <= j; k++)
cout << k << " ";
}
}
if (p == 1) cout << endl;
s = 0;
}
if (p!=1)
cout << "Imposibil";
return 0;
}
using namespace std;
int main()
{
int n, i, j, s = 0, k, p=0;
cin >> n;
for (i = 1; i <= n-1; i++)
{
for (j = i; j <= n-1 && s!=n; j++)
{
s = s + j;
if (s == n)
{
p = 1;
for (k = i; k <= j; k++)
cout << k << " ";
}
}
if (p == 1) cout << endl;
s = 0;
}
if (p!=1)
cout << "Imposibil";
return 0;
}
petrutzmy99:
Probabil ca exista si o metoda mai eficienta dar merge si asta :)
Alte întrebări interesante
Religie,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
10 ani în urmă