Pagini recente » Cod sursa (job #253139) | Cod sursa (job #1952219) | Cod sursa (job #2511439) | Cod sursa (job #2548585) | Cod sursa (job #2393750)
#include <fstream>
using namespace std;
ifstream fin("koba.in");
ofstream fout("koba.out");
int t1,t2,t3,t4,n,i,j,aux,f[1001],S,cicluri,stotal,sciclu,scoada;
int v[5000],k,nrciclu,nrcoada;
int main(){
fin>>n>>t1>>t2>>t3;
t1%=10;t2%=10;t3%=10;
if(n==1){fout<<t1;return 0;}
else if(n==2){fout<<t1+t2;return 0;}
else if(n==3){fout<<t1+t2+t3;return 0;}
stotal=t1+t2+t3;
v[++k]=t1;
v[++k]=t2;
v[++k]=t3;
for(;;){
aux=t1*100+t2*10+t3;
f[aux]++;
t4=(t3+t2*t1)%10;
v[++k]=t4;
stotal+=t4;
t1=t2;
t2=t3;
t3=t4;
if(f[aux]==2){
//s-a incheiat ciclul, il mai parcurgem o data ca sa ii calc suma
sciclu=t4;
for(;;){
nrciclu++;
aux=t1*100+t2*10+t3;
f[aux]++;
if(f[aux]==3)
break;
t4=(t3+t2*t1)%10;
sciclu+=t4;
t1=t2;
t2=t3;
t3=t4;
}
break;
}
}
scoada=stotal-sciclu;
nrcoada=k-nrciclu;
if(n<=nrcoada){
for(i=1;i<=n;i++)
S+=v[i];
fout<<S;
return 0;
}
S=scoada;
n-=nrcoada;
cicluri=n/nrciclu;
S+=cicluri*sciclu;
n-=cicluri*nrciclu;
if(n)for(i=nrcoada+1;n;n--,i++)
S+=v[i];
fout<<S;
return 0;
}