Pagini recente » Cod sursa (job #1559496) | Cod sursa (job #233918) | Cod sursa (job #809279) | Cod sursa (job #1741159) | Cod sursa (job #1492417)
#include <fstream>
using namespace std;
int n,t1,t2,t3,nr,sc,d,x2,i,s,f[20000],v[10000],s2,s3,s4,a,b,c,r,x,ciclu,coada;
ifstream fin ("koba.in");
ofstream fout ("koba.out");
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;
//fout<<d<<" "<<nr<<"\n";
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;
//fout<<coada<<" "<<ciclu<<"\n";
s2 = s;
sc = 0; //suma cozii
for (i=1;i<=f[nr]-1;i++){
s2-=v[i]; // suma ciclului
sc+=v[i];
}
//fout<<sc<<" ";
s3 = s2;
s3*=(x2-2)/ciclu;
for (i=f[nr];i<=f[nr]+r;i++)
s3+=v[i];
fout<<sc+s3;
return 0;
}