Cod sursa(job #138656)

Utilizator dgoldenAlex Popescu dgolden Data 18 februarie 2008 23:16:08
Problema Koba Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <cstdio>
#include <cstring>

using namespace std;

#define FIN "koba.in"
#define FOUT "koba.out"
#define MAX_C 1000
#define MAX_N 100000

int P[MAX_C];
int A[MAX_N];

int N, t1, t2, t3;
int S;
int p;
long long BEST;

    int rec (int a, int b, int c)
    {
        return a*100 + b*10 + c;
    }

    void solve ()
    {
         int i;
         int T;
         int sp = S = t1%10 + t2%10 + t3%10;
         A[1] = t1%10; A[2] = A[1] + t2%10; A[3] = A[2] + t3%10;
         for (i = 4; i <= N; ++i)
         {
             int ind = rec (t1%10, t2%10, t3%10);
             if (!P[ind]) ++P[ind];
                else 
                {
                     p = i;
                     break;
                }
             T = (t3 % 10 + (t2 % 10 * t1 % 10)) % 10;
             t1 = t2 % 10;
             t2 = t3 % 10;
             t3 = T % 10;
             A[i] = S += T%10;
             
         }
         p -= 4;
         BEST = (long long) (N/p)*(S - sp);
         BEST += (long long) A[N%p];
         printf ("%lld\n", BEST);
    }

    int main ()
    {
        freopen (FIN, "r", stdin);
        freopen (FOUT, "w", stdout);
        
        scanf ("%d %d %d %d", &N, &t1, &t2, &t3);
        
        solve ();
        
        return 0;
    }