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

Se rezolva doar cu FOR,WHILE,IF fara chestii complicate: vectori,pointeri,functii etc.
Multumesc,dau COROANA+5*+Multumesc
Andrei este colecționar de timbre. Deoarece are prea multe timbre și loc de depozitare cam puțin, s-a gândit să îi ofere o parte din ele unui prieten de-al său, la fel de pasionat. Fiindcă este atașat de fiecare timbru în parte, Andrei nu poate alege pe care timbre să le dea cadou, așa că s-a gândit la o modalitate de a alege automat timbrele.

Acesta are un număr n de timbre, iar fiecare timbru are un număr de ordine de la 0 la n-1. El s-a gândit să îi ofere prietenului său k timbre, și anume cele cu cel mai mare număr de ordine mai mic decât n, care să fie multipli ai unui număr ales p.

Date de intrare
Programul citește de la tastatură numărul natural n, reprezentând numărul de timbre din colecție, un număr k, reprezentând numărul de timbre pe care Andrei vrea să le ofere, urmat de un alt număr p, numărul ai cărui multipli îi căutăm.

Date de ieșire
Programul va afișa pe ecran numerele de ordine ale timbrelor pe care Andrei i le va oferi prietenului său, în ordine descrescătoare.

Restricții si precizări
0 < n ≤ 2500
0 < k < 25
0 < p ≤ 100
Se garantează că pentru fiecare test există soluție
Exemplu
Date de intrare Date de ieșire
158 4 11 154 143 132 121

Răspunsuri la întrebare

Răspuns de gabi54t
1

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   int n, p,k;

  cin>>n>>k>>p;

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

  {

      cout<<(n/p)*p<<" ";

      n=n-p;

  }

   return 0;

}

Explicație:

am citit n, k si p

apoi am facut un for de la 1 pana la k (deoarece trebuiesc afisate k numere)

numerele fiind naturale si nu reale, operatia "/" sau div o sa returneze catul impartirii la p, dupa care inmultim cu p ca sa obtinem multiplul lui p, apoi il scadem pe p din n ca sa obtinem urmatorul numar.

Daca este prea complicat sau ceva mai pot posta inca o rezolvare pentru problema


rollinn20: am primit doar 65 de pcte...undeva e o mica greseala...poate ma poti ajuta
gabi54t: incearca sa pui unsigned inloc de int la declarare
rollinn20: am pus unsigned int si tot 65 de pcte imi da:(
gabi54t: #include

using namespace std;

int main()

{

unsigned n, p, k, i;

cin>>n>>k>>p;

for(i=n-1; i>=0 && k; i--)
if(i%p==0)
{
cout< k--;

}

return 0;

}

#include

using namespace std;

int main()

{

int n, p,k;

cin>>n>>k>>p;

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

{

cout<<((n-1)/p)*p<<" ";

n=n-p;

}

return 0;

}
mai incearca-le si pe astea
rollinn20: ultima varianta a functionat perfect!:)multumesc mult!
gabi54t: np, nu m.am uitat eu bine la cerinta :)))
Alte întrebări interesante