Se generează un şir de cifre ai cărui primi termeni sunt, în această ordine:
1, 1, 2, 4, 7, 3, 4, 4, 1, 9, 4, 4, 7, 5, 6, 8,...
Cerința
Deduceţi regula după care sunt generaţi termenii şirului şi scrieţi un program care să citească numerele naturale n
, k
şi p
şi care să determine:
a) numărul de apariţii ale cifrei k
printre primii n
termeni ai şirului din enunţ;
b) cel de-al p
-lea termen al şirului din enunţ.
Date de intrare
Programul citește de la tastatură numerele n k p
.
Date de ieșire
Programul va afișa pe ecran două numere naturale:
- primul număr va reprezenta numărul de apariţii ale cifrei
k
printre primiin
termeni ai şirului din enunţ; - al doilea număr va reprezenta cel de-al
p
-lea termen al şirului din enunţ.
Restricții și precizări
- Numerele
n k p
sunt naturale 17 ≤ n ≤100; 0 ≤ k ≤ 9; 1≤ p ≤ 2000000000
- Pentru rezolvarea corectă a cerinţei a) se acordă
30%
din punctaj iar pentru cerinţa b)70%
din punctaj.
Exemplu
Intrare
19 4 26
Ieșire
5 7
Explicație
Primii 19
termeni ai şirului sunt: 1,1,2,4,7,3,4,4,1,9,4,4,7,5,6, 8,9,3,0
.
Primul număr afişat este 5
, deoarece sunt 5
cifre din șir egale cu k
(k=4
) printre primii n=19
termeni ai şirului.
Al doilea număr afişat este 7
, deoarece cel de-al p
-lea (p=26
) termen al şirului este 7
.
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 Cifre7:
#include <iostream>
using namespace std;
int main()
{
int p , a , b , c , d , n , i , k , nr = 0 , y;
cin >> n >> k >> p;
a = 1; b = 1; c = 2;
y = p % 124;
if(a == k)
nr ++;
if(b == k)
nr ++;
if(c == k)
nr ++;
for(i = 4 ; i <= n ; i ++)
{
d = (a + b + c) % 10;
a = b; b = c; c = d;
if(d == k)
nr ++;
}
a = 1; b = 1; c = 2;
if(y == 1)
d = a;
else
if(y == 2)
d = b;
else
if(y == 3)
d = c;
else
{
if(y == 0)
y = 124;
for(i = 4 ; i <= y ; i++)
{
d = (a + b + c) % 10;
a = b; b = c; c = d;
}
}
cout << nr << endl << 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 #951 Cifre7
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #951 Cifre7 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!