Informatică, întrebare adresată de bodymitho, 9 ani în urmă

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ţ.

La punctul a) am rezolvat:
#include
using namespace std;
int main()
{
int a,b,c,d,n,i,nr=0,p,k;
a=1;b=1;c=2;
if(d==1) nr+=2;
if(d==2) nr++;
cin>>n;
cin>>k;
for(i=4;i<=n;i++)
{

d=(a+b+c)%10;
if(d==k) nr++;
a=b;
b=c;
c=d;
}
cout<
}

La punctul b) am nevoie de explicatie va rog :)

Răspunsuri la întrebare

Răspuns de blindseeker90
0
Trebuie sa citesti cele 2 numere inainte de a pune conditiile de if. Si acolo verifdici daca k=1 sau 2, nu d. Daca vrei elementul p, si ai generat sirul, doar verifici cand ajungi la elementul p

#include <iostream>
using namespace std;
int main()
{
int a,b,c,d,n,i,nr=0,p,k,termen;
a=1;b=1;c=2;
cin>>n;
cin>>k;
if(k==1) nr+=2;
if(k==2) nr++;
if(p==1){
    termen=a;
    }
else if(p==2){
    termen=b;
    }   
else if(p==3){
    termen=c;
    }   
   
for(i=4;i<=n;i++)
{
d=(a+b+c)%10;
if(d==k) nr++;
a=b;
b=c;
c=d;

if(i==p){
    termen=d;
    }
}
cout<<nr<<endl;
cout<<termen;
}


bodymitho: am uitat sa specific ca p<=200000000. Sorry
Alte întrebări interesante