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

pbinfo 2919
Cerința
Se dă numărul natural n. Să se împartă numerele naturale de la 1 la n în două grupuri astfel încât diferența absolută dintre sumele numerelor din cele două grupuri să fie minimă.

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieșire
Programul va afișa pe ecran pe primul rând numerele din primul grup și pe al doilea rând numerele din al doilea grup, separate prin câte un spațiu. Ordinea afișării nu contează.

Restricții și precizări
2 ≤ n ≤ 100.000



Exemplu
Intrare

5
Ieșire

5 2
4 3 1

Răspunsuri la întrebare

Răspuns de daniel22
6

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   int n,a[50000],b[50000],k=0,m=0;

   cin>>n;

   for(int i=1;i<=n;i++)

   {

       if(i%2==1)

           a[k++]=i;// 1 3 5 7 9 ...

       else

           b[m++]=i;// 2 4 6 8 ...

   }

   if(n%2==1)

   {

       for(int i=0;i<k;i=i+2)

           if(i!=k-1)

               cout<<a[i]<<" "<<b[i]<<" ";

           else

               cout<<a[i]<<" "; // 9

       cout<<endl;

       for(int i=1;i<m;i=i+2)

           cout<<a[i]<<" "<<b[i]<<" ";

   }

   else

   {

       for(int i=0;i<k;i++)

           if(i%2==0)

               cout<<a[i]<<" ";

           else

               cout<<b[i]<<" ";

       cout<<endl;

       for(int i=0;i<k;i++)

           if(i%2==1)

               cout<<a[i]<<" ";

           else

               cout<<b[i]<<" ";

   }

}

Explicație:

Anexe:
Alte întrebări interesante