Fie c
o cifră, iar s
un şir de n
numere naturale. Utilizând toate cifrele impare ale unităţilor numerelor din s
, se construieşte un nou şir de numere naturale v
cu proprietăţile următoare:
- toate numerele din şirul
v
au acelaşi număr de cifre - fiecare număr din
v
este format doar din cifre identice - şirul
v
este format din cel mai mic număr de valori naturale care au proprietăţile 1. şi 2.
Cerinţe
Scrieţi un program care să citească numerele c
, n
şi şirul s
, şi să determine:
a) suma tuturor numerelor din şirul s
care au proprietatea că sunt numere prime
b) numărul de apariţii ale cifrei c
în scrierea zecimală a tuturor numerelor din şirul s
c) numărul minim de numere din şirul v
Date de intrare
Programul citește de la tastatură numerele n c
, iar apoi cele n
elemente ale șirului s
.
Date de ieșire
Programul va afișa pe ecran trei numere, câte unul pe o linie, reprezentând în ordine:
- suma tuturor numerelor din şirul
s
care au proprietatea că sunt numere prime - numărul de apariţii ale cifrei
c
în scrierea zecimală a tuturor numerelor din şiruls
- numărul minim de valori din şirul
v
Restricții și precizări
- Numerele
n
şic
sunt naturale 2 ≤ n ≤ 10000
0 ≤ c ≤ 9
- toate cele
n
numere naturale din şiruls
sunt mai mici sau egale cu30000
- pentru rezolvarea cerinţei a) se acordă
40%
din punctaj, pentru cerinţa b)20%
din punctaj şi pentru cerinţa c)40%
din punctaj.
Exemplu
Intrare
10 9 1943 31 19 1199 34 941 7971 131 223 6
Ieșire
1345 6 4
Explicație
a) numerele prime din şirul s
sunt: 31
, 19
, 941
, 131
şi 223
. Suma acestora este 1345
.
b) cifra c=9
apare de 6
ori în scrierea numerelor din s
.
c) cifrele impare ale unităţilor numerelor din s
sunt, în ordine crescătoare: 1
, 1
, 1
, 1
, 3
, 3
, 9
, 9
. Se pot forma minimum 4
numere cu toate cifrele identice: 11
, 11
, 33
, 99
, fiecare număr din noul şir având numărul maxim posibil de cifre, adică 2
. Numărul minim de termeni ai şirului este egal cu 4
.
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 Cifre8:
# include <iostream>
using namespace std;
int main()
{
int n, s, c, sum = 0, nc = 0, c1 = 0, c3 = 0, c5 = 0, c7 = 0, c9 = 0;
cin >> n >> c;
for(int i = 1; i <= n ; i ++)
{
cin >> s;
if(s % 10 == 1)
c1 ++;
if(s % 10 == 3)
c3 ++;
if(s % 10 == 5)
c5 ++;
if(s % 10 == 7)
c7 ++;
if(s % 10 == 9)
c9 ++;
bool prim = true;
if(s < 2)
prim = false;
for(int d = 2 ; d * d <= s && prim ; d ++)
if(s % d == 0)
prim = false;
if(prim)
sum += s;
while(s)
{
if(s % 10 == c)
nc ++;
s /= 10;
}
}
cout << sum << endl << nc << endl;
int d = 1;
for(int i = 1 ; i <= n ; i ++)
if(c1 % i == 0 && c3 % i == 0 && c5 % i == 0 && c7 % i == 0 && c9 % i == 0)
d = i;
cout << (c1 + c3 + c5 + c7 + c9)/d << endl;
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 .
Rezolvarea problemei #967 Cifre8
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #967 Cifre8 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!