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

1, 2, 3, 5, 8, 3, 1, 4, 5, 9, 4, 3, 7, 0, 7, 7, 4,...
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) suma tuturor numerelor prime aflate printre primii n termeni ai şirului din enunţ;
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

Răspuns de ap53
6
#include <iostream>
using namespace std;

int main()
{
int a,b,c,n,i,k,s=0,nr=0,y;
int p;
cin>>n>>k>>p;
a=1; b=2;  y=p%60;
if(a==k)nr++;
if(b==k)nr++;
s=2;
for(i=3;i<=n;i++)
{
c=(a+b)%10;  
a=b; b=c;
if((c==2)||(c==3)||(c==5)||(c==7))s=s+c;
if(c==k)nr++;
}
a=1; b=2;
if(y==1)
c=a;
else
if(y==2)
c=b;
else
{
if(y==0)
y=60;
for(i=3;i<=y;i++)
{
c=(a+b)%10;  
a=b; b=c;
}
}
cout<<s;
cout<<endl<<nr;
cout<<endl<<c;
return 0;
}                             
Răspuns de express
5
Am si eu o solutie in C++ cu vectori. Succes!
#include <bits/stdc++.h>
using namespace std;
int ct, k, p, n, v[105], i, s;
int main ()
{
    cin >> n >> k >> p;
    v[1] = 1;
    v[2] = 2;
    for (i = 3; i<= 100; i ++)
        v[i] = (v[i-1] + v[i-2]) % 10;
    s = 0;
    for (i = 1; i <= n; i ++)
    {
        if (v[i] == 2 || v[i] == 3 || v[i] == 5 || v[i] == 7)
            s = s + v[i];
        if (v[i] == k) ct ++;
    }
    p = p % 60;
    cout << s << "\n";
    cout << ct << "\n";
    cout << v[p];
    return 0;
}

Alte întrebări interesante