Rezolvare completă PbInfo #2745 intrebari

Cerința

Se dau n numere naturale. Dându-se totodată un număr p, apare o intrebare care poate fi de unul dintre următoarele două feluri posibile: care este suma cifrelor valorii minime dintre primele p ale șirului (tipul 1) respectiv, care este numărul de divizori ai valorii maxime dintre primele p elemente ale șirului (tipul 2).

Date de intrare

Programul citește de la tastatură mai întâi numerele n, t și p iar apoi n numere naturale (elementele șirului).

Date de ieșire

Dacă valoarea t, este 1, programul va afișa pe ecran răspunsul la cerința de tipul 1.
Dacă valoarea t, este 2, programul va afișa pe ecran răspunsul la cerința de tipul 2.

Indiferent de tipul cerinței, pe linia următoare se va afișa suma elementelor șirului.

Restricții și precizări

  • 1 ≤ n ≤ 10
  • cele n numere citite vor fi naturale nenule și mai mici decât 1.000.000.000
  • numerele șirului sunt numerotate începând cu 1
  • valoarea lui p este cuprinsă între 1 și n, inclusiv
  • 1 ≤ t ≤ 2

Exemple:

Intrare

6 1 3
14 13 16 22 15 1

Ieșire

4
81

Explicație

Este vorba despre o interogare de tipul 1 și minimul dintre primele trei elemente ale șirului este 13 iar suma cifrelor sale este 4.

Intrare

6 2 3
14 13 16 22 15 1

Ieșire

5
81

Explicație

Este vorba despre o interogare de tipul 2 și maximul dintre primele trei elemente ale șirului este 16 iar numărul său de divizori este 5.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema intrebari:

#include <iostream>
using namespace std;
long long n, t, p, i, suma, s, x, a;
int main () {
    cin>>n>>t>>p;
    cin>>a;
    suma = a;
    for (i=2;i<=n;i++) {
        cin>>x;
        suma += x;
        if (i <= p) {
            if (t == 1 && x < a)
                a = x;
            if (t == 2 && x > a)
                a = x;
        }
    }

    s = 0;
    if (t == 1) {
        while (a!=0) {
            s += a%10;
            a /= 10;
        }
    } else {
        for (i=1;i<=a/i;i++)
            if (a%i == 0) {
                s++;
                if (i!=a/i)
                    s++;
            }
    }

    cout<<s<<"\n"<<suma;

    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #2745 intrebari

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2745 intrebari de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!