Pagini recente » Cod sursa (job #1750101) | Cod sursa (job #1676828) | Cod sursa (job #13167) | Cod sursa (job #1448572) | Cod sursa (job #2912401)
#include <fstream>
using namespace std;
ifstream cin("koba.in");
ofstream cout("koba.out");
int f[1005];
int s[100005];
int main()
{
int n,sum=0;
int a,b,c,d;
int a1,b1,c1;
cin>>n>>a>>b>>c;
a%=10;
b%=10;
c%=10;
switch(n)
{
case 1:
cout<<a;
break;
case 2:
cout<<a+b;
break;
case 3:
cout<<a+b+c;
break;
}
if(n>=4)
{
int rez;
f[a*100+b*10+c]=1;
s[1]=a;
s[2]=a+b;
s[3]=a+b+c;
for(int i=4; i<=n; i++)
{
d=c+b*a;
d%=10;
s[i]=s[i-1]+d;
a=b;
b=c;
c=d;
//cout<<d<<" ";
if(f[a*100+b*10+c]>0)
{
int last=f[a*100+b*10+c];
sum=s[i-3]-s[last-1];
int dif=i-2-last;
// cout<<'\n'<<i<<" "<<last<<'\n';
n-=last-1;
rez=s[last-1]+sum*(n/dif);
n%=dif;
break;
}
else f[a*100+b*10+c]=i-2;
}
switch(n)
{
case 1:
rez+=a;
break;
case 2:
rez+=a+b;
break;
case 3:
rez+=a+b+c;
break;
}
if(n>3)
rez+=a+b+c;
for(int i=4; i<=n; i++)
{
d=c+b*a;
d%=10;
rez=rez+d;
a=b;
b=c;
c=d;
}
cout<<rez;
}
return 0;
}