👤
a fost răspuns

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

Am Si Eu Nevoie De Ajutor La Ultima Problema Cu O Metoda Cat Mai Simplu De Intelesva Rog Si Cu Explicatie Daca Se Poate class=

Răspuns :

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ă.