Pagini recente » Cod sursa (job #891540) | Cod sursa (job #1263878) | Cod sursa (job #1385105) | Cod sursa (job #2746152) | Cod sursa (job #1463057)
#include <fstream>
using namespace std;
ifstream fin ("koba.in");
ofstream fout ("koba.out");
int v[1000],per[1000];
int ok,n,i,sper=0,suma=0,poz;
inline int gaseste()
{
for(int k=3;k<=i-3;++k)
if(v[k]==v[i] && v[k-1]==v[i-1] && v[k-2]==v[i-2])
{
poz=k-3;
return 1;
}
return 0;
}
void prelucreaza()
{
for(int k=1;k<=poz;++k)
suma+=v[k];
for(int k=poz+1;k<=i-3;++k)
per[ ++per[0] ]=v[k];
}
int main()
{
fin >> n;
fin >> v[1] >> v[2] >> v[3];
v[1]%=10; v[2]%=10; v[3]%=10;
if(n<500)
{
for(i=4;i<=n;++i)
v[i]=(v[i-1]+v[i-2]*v[i-3])%10;
for(int i=1;i<=n;++i)
suma+=v[i];
fout << suma;
return 0;
}
for(i=4;i<=n;++i)
{
v[i]=(v[i-1]+v[i-2]*v[i-3])%10;
if(gaseste() )
{
prelucreaza();
break;
}
}
for(int j=1;j<=per[0];++j)
sper+=per[j];
suma+=sper*((n-poz)/per[0]);
for(int i=1;i<=(n-poz)%per[0];++i)
suma+=per[i];
fout << suma;
return 0;
}