fbpx

Problema #2612 – Fibo_SumaCifre – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Numim suma cifrelor până la o cifră a unui număr X, o valoare mai mică decât 10 obținută prin adunarea cifrelor numărului X și repetarea procedurii dacă suma obținută este mai mare decât 10, de această dată având drept X suma obținută la pasul precedent.

Se dă un număr n reprezentând poziția unui număr Fn din șirul lui Fibonacci. Să se calculeze suma cifrelor până la o cifră a lui Fn.

Reamintim că primele două numere din șirul lui Fibonacci au valoarea 1, iar restul se obțin ca fiind suma precedentelor două (pentru orice poziție n mai mare strict decât 2, Fn = Fn-1 + Fn-2).

Date de intrare

Programul citește de la tastatură numărul n.

Date de ieșire

Programul va afișa pe ecran valoarea S, reprezentând suma cifrelor până la o cifră a numărului Fn.

Restricții și precizări

  • 1 ≤ n ≤ 1019

Exemplu

Intrare

11

Ieșire

8

Explicație

Al unsprezecelea număr din șirul lui Fibonacci este 89 (1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89…). Adunând cifrele acestuia obținem 17. Deoarece 17 este mai mare decât 10 se adună și cifrele acestuia: 1+7=8.

#include <bits/stdc++.h>
using namespace std;
int main()
{
    unsigned long long n , a , b , c , s = 0;
    cin >> n;
    if(n == 1) cout << 1;
    else if(n == 2) cout << 1;
    else
    {
        if(n > 24) n %= 24;
        a = 1 , b = 1;
        for(int i = 3 ; i <= n ; i++)
        {
            c = a + b;
            a = b;
            b = c;
        }
        cout << c% 9;
    }
}
Comentarii

S-ar putea sa iti placa