Pagini recente » Istoria paginii grigore-moisil-2009/clasament/5-8 | pictura | Diferente pentru utilizator/blacknesta intre reviziile 93 si 47 | Cartonase | Cod sursa (job #3150552)
#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;
}