Cod sursa(job #3150552)

Utilizator Alex_BerbescuBerbescu Alexandru Alex_Berbescu Data 17 septembrie 2023 11:21:40
Problema Koba Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.82 kb
#pragma GCC  optimize("unroll-loops")
#pragma GCC optimize("fast-math")
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
int n, a, b, c, sumperioada, periodicitate, suminitial, ct, d;
ifstream fin("koba.in");
ofstream fout("koba.out");
int32_t main(int argc, char * argv[])
{
    fin >> n >> a >> b >> c;
    a %= 10;
    b %= 10;
    c %= 10;
    if(a == 0)
    {
        ct = 0, suminitial = 0;
    }
    else
    {
        if(b == 0)
        {
            ct = 1;
            suminitial = a;
        }
        else
        {
            if(c == 0)
            {
                ct = 2;
                suminitial = (a + b);
            }
            else
            {
                ct = 3;
                suminitial = (a + b + c) % 10;
                d = (c + a * b) % 10;
                while(d != 0)
                {
                    ct++;
                    suminitial = (suminitial + d);
                    a = b;
                    b = c;
                    c = d;
                    d = (c + a * b) % 10;
                }
                a = b;
                b = c;
                c = d;
                d = (c + a * b) % 10;
                if(d != 0)
                {
                periodicitate++;
                sumperioada += d;
                }
                while(d != 0)
                {
                    a = b;
                    b = c;
                    c = d;
                    d = (c + a * b) % 10;
                    if(d != 0)
                    {
                        periodicitate++;
                        sumperioada += d;
                    }
                }


            }
        }
    }
    if(periodicitate != 0)
    {
        fout << (suminitial + ((n - ct) / periodicitate) * sumperioada);
    }
    else
    {
        fout << suminitial;
    }
    return 0;
}