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
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;
}
#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
Matematică,
8 ani în urmă
Engleza,
8 ani în urmă
Istorie,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă