Pagini recente » Cod sursa (job #1628049) | Cod sursa (job #1485891) | Cod sursa (job #496668) | Cod sursa (job #2003603) | Cod sursa (job #1472524)
#include <fstream>
using namespace std;
ifstream f("koba.in") ;
ofstream g("koba.out") ;
long long n , t1 , t2 , t3 , t4 , sol , number[1005] , sum[1005] , i ;
long long calc(long long t1 , long long t2 , long long t3 , long long nr) ;
int main()
{
f >> n >> t1 >> t2 >> t3 ;
t1 %= 10 , t2 %= 10 , t3 %= 10 ;
sum[t3 * 100 + t2 * 10 + t1] = t1 + t2 + t3 ;
number[t3 * 100 + t2 * 10 + t1] = 1 ;
for(int i = 4 ; i <= n ; ++i){
int t4 = (t3 + t2 * t1) % 10 ;
if(number[t4 * 100 + t3 * 10 + t2] == 0){
sum[t4 * 100 + t3 * 10 + t2] = sum[t3 * 100 + t2 * 10 + t1] + t4;
number[t4 * 100 + t3 * 10 + t2] = number[t3 * 100 + t2 * 10 + t1] + 1 ;
}
else{
long long t = t4 * 100 + t3 * 10 + t2 ;
long long x = number[t3 * 100 + t2 * 10 + t1] + 1 - number[t] ;
long long E = (n - number[t] - 2) ;
sol = (E / x) * (sum[t3 * 100 + t2 * 10 + t1] + t4 - sum[t]);
sol += calc(t2 , t3 , t4 , E % x) ;
sol += sum[t4 * 100 + t3 * 10 + t2] ;
break ;
}
sol = sum[t4 * 100 + t3 * 10 + t2] ;
t1 = t2 ;
t2 = t3 ;
t3 = t4 ;
}
g << sol ;
return 0;
}
long long calc(long long t1 , long long t2 , long long t3 , long long nr){
long long sol = 0 ;
for(int i = 1 ; i <= nr ; ++i){
int t4 = (t3 + t2 * t1) % 10 ;
t1 = t2 ;
t2 = t3 ;
t3 = t4 ;
sol += t4 ;
}
return sol ;
}