Cod sursa(job #1744635)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 20 august 2016 01:35:29
Problema Koba Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#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;
}