Pagini recente » Cod sursa (job #57261) | Cod sursa (job #1469904) | Cod sursa (job #2335883) | Cod sursa (job #698678) | Cod sursa (job #140111)
Cod sursa(job #140111)
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
int main()
{
ifstream f1("koba.in");
ofstream f2("koba.out");
int n, t1, t2, t3, poz, i, t, tt, s = 0, cont;
int nr[1001] = {}, sir[1001] = {};
int suma_per = 0, elem_per, nr_per, nr_elem_coada;
f1 >> n >> t1 >> t2 >> t3;
t1 %= 10; t2 %= 10; t3 %= 10;
sir[1] = t1; sir[2] = t2; sir[3] = t3;
poz = 3;
for (cont = 1; cont <= n; ++cont) {
//cout << sir[poz] << endl;
tt = t1 * 100 + t2 * 10 + t3;
if (nr[tt]) {
for (i = nr[tt]; i <= poz - 3; ++i) {
//cout << sir[i] << " ";
suma_per += sir[i];
}
elem_per = poz - 3 - nr[tt] + 1;
nr_per = (n - nr[tt] + 1) / elem_per;
//cout << elem_per << endl << nr_per << endl << suma_per << endl;;
s+=suma_per * nr_per;
for (i = 1; i < nr[tt]; ++i)
s += sir[i];
nr_elem_coada = n - nr[tt] + 1 - elem_per * nr_per;
//cout << nr
for (i = nr[tt]; i < nr[tt] + nr_elem_coada; ++i)
s += sir[i];
cont = 0;
break;
}
//else {
t = t1 * t2 + t3;
t %= 10;
sir[++poz] = t;
nr[tt] = poz - 3;
t1 = t2;
t2 = t3;
t3 = t;
//}
//system("PAUSE");
}
if (cont == n + 1)
for (i = 1; i <= n; ++i) {
s+=sir[i];
}
f2 << s << endl;
//system("PAUSE");
f1.close();
f2.close();
return 0;
}