Pagini recente » Cod sursa (job #8734) | Cod sursa (job #1000321) | Cod sursa (job #1541508) | Cod sursa (job #1586986) | Cod sursa (job #1744635)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin("koba.in");
ofstream cout("koba.out");
int vc[10][10][10], v[1010];
int main() {
int n, cycle, start, i, sum = 0;
cin >> n >> v[1] >> v[2] >> v[3];
v[1] %= 10;
v[2] %= 10;
v[3] %= 10;
vc[v[1]][v[2]][v[3]] = 1;
for (i = 4; i <= n; i++) {
v[i] = (v[i - 1] + v[i - 2] * v[i - 3]) % 10;
if (vc[v[i - 2]][v[i - 1]][v[i]] == 0)
vc[v[i - 2]][v[i - 1]][v[i]] = i - 2;
else {
cycle = i - 2 - vc[v[i - 2]][v[i - 1]][v[i]];
start = vc[v[i - 2]][v[i - 1]][v[i]];
}
}
if (i > n) {
for (int j = 1; j <= n; j++)
sum += v[j];
cout << sum;
return 0;
}
for (int i = start; i <= start + cycle - 1; i++)
sum += v[i];
int temp = 0;
for (int i = 1; i < start; i++)
temp += v[i];
n -= start - 1;
sum = sum * (n / cycle) + temp;
int r = n % cycle;
for (int i = start; i < start + r; i++)
sum += v[i];
cout << sum;
return 0;
}