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,... 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ţ.
Răspunsuri la întrebare
#include <iostream>
using namespace std;
int n, k, p, tip, i, gasit1, gasit2, ap, t1=1, t2=1, t3=2, urm;
int main()
{
cout << "n= "; cin >> n;
cout << "k= "; cin >> k;
cout << "p= "; cin >> p;
if (n==1 && k==t1) { ap=1; gasit1=1; }
if (p==1) { tip=t1; gasit2=1; }
if (n==2 && k==t2) { ap=2; gasit1=1; }
if (p==2) { tip=t2; gasit2=1; }
if (n==3 && k==t3) { ap=1; gasit1=1; }
if (p==3) { tip=t3; gasit2=1; }
i=3;
while (gasit1==0 || gasit2==0)
{
++i;
urm=(t1+t2+t3)%10;
if (gasit1==0)
{
if (urm==k) ++ap;
if (i==n) gasit1=1;
}
if (gasit2==0)
{
if (i==p) { tip=urm; gasit2=1; }
}
t1=t2; t2=t3; t3=urm;
}
cout << "a) aparitii= " << ap << endl;
cout << "b) t" << p << "= " << tip << endl;
}