Pagini recente » Cod sursa (job #320713) | Cod sursa (job #471095) | Cod sursa (job #2605761) | Cod sursa (job #2096761) | Cod sursa (job #2345441)
#include <fstream>
using namespace std;
ifstream fin ("koba.in");
ofstream fout ("koba.out");
long long n,t1,t2,t3,nr,sc,d,x2,i,s,s2,s3,s4,a,b,c,r,x,ciclu,coada;
long long f[20000],v[10000];
int main (){
fin>>n>>t1>>t2>>t3;
if (n == 1){
fout<<t1%10;
return 0;
}
if (n == 2){
fout<<t1%10+t2%10;
return 0;
}
if (n == 3){
fout<<t1%10+t2%10+t3%10;
return 0;
}
a = t1, b = t2, c = t3;
v[1] = a%10, v[2] = b%10, v[3] = c%10;
s = a%10 + b%10 + c%10;
f[a%10*100 + b%10*10 + c%10] = 3;
for (i=4;i<=n;i++){
d = (c + b*a) % 10;
a = b%10, b = c%10, c = d%10;
nr = a*100+b*10+c;
v[i] = d;
if (f[nr] != 0)
break;
f[nr] = i;
s += d%10;
}
if (i > n){
fout<<s;
return 0;
}
ciclu = i-f[nr];
coada = i-ciclu;
x2 = n-coada;
r = x2 % ciclu;
s2 = s;
sc = 0; ///suma cozii
for (i=1;i<=f[nr]-1;i++){
s2 -= v[i]; /// suma ciclului
sc += v[i];
}
s3 = s2;
s3 *= (x2-2)/ciclu;
for (i=f[nr];i<=f[nr]+r;i++)
s3 += v[i];
fout<<sc+s3;
return 0;
}