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

Am si eu nevoie de ajutor la ultima problema( cu o metoda cat mai simplu de inteles,va rog) . Si cu explicatie, daca se poate

Anexe:

boiustef: sper că am fost explicit...

Răspunsuri la întrebare

Răspuns de boiustef
1

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   int n,k;

   cin >> n >> k;

   if ((2*n+k-k*k)%(2*k)!=0)

       cout << "nu exista";

   else

   {

       int num=(2*n+k-k*k)/(2*k);

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

       {

          cout << num++ << " ";

       }

   }

}

Explicație:

e mai multă matematică... acei k termeni consecutivi formează o progresie aritmătică cu raţia 1 şi suma a k termeni este egală cu n. Conform formulei sumai a k termeni a progresiei arotmetice avem:

((a1+ak)*k)/2=n, de unde (a1+ak)*k=2*n, de unde a1+ak=(2*n)/k, dar ak=a1+(k-1)*1, ak=a1+k-1. Înlocuim şi avem a1+a1+k-1=(2*n)/k, de unde

a1=(2*n+k-k*k)/(2*k);  Şi deci dacă restul de la împărţire este 0, atunci exista a1 şi deci şi k numere consecutive cu suma egală cu n, altfel nu există.


sara12345e: Am inteles, m-ai ajutat mult de tot
sara12345e: Multumesc din suflet
Alte întrebări interesante