Cod sursa(job #791352)

Utilizator idainetJohn Doe idainet Data 23 septembrie 2012 21:14:41
Problema Cifra Scor 0
Compilator cpp Status done
Runda asem-info Marime 1.42 kb
//
//  main.cpp
//  a1
//
//  Created by abc on 9/20/12.
//  Copyright (c) 2012 abc. All rights reserved.
//

# include <iostream>
# include <cstdio>
# include <cstdlib>
# include <iomanip>
# include <cmath>
# include <map>
# include <vector>

using namespace std;

typedef long long LONG;

void init()
{
    freopen("cifra.in", "r", stdin);
    freopen("cifra.out", "w", stdout);
}

/*
 int read_long()
 {
 char ch = getchar(), a[2] = {'0', '0'};
 while(!isdigit(ch)) ch = getchar();
 while(isdigit(ch)) { a[0] = a[1]; a[1] = ch; ch = getchar(); }
 
 cout << atoi(a) << "!!" << endl;
 return atoi(a);
 }
 */

int read_long_2()
{
    string a, b;
    cin >> a;
    if (a.size() > 2)
    {
        b += a[a.size()-2];
        b += a[a.size()-1];
    }
    else {
        b = a;
    }
    
    int ans;
    sscanf(b.c_str(), "%d", &ans);
    
    return ans;
}

int ans(int N)
{
    static const int magik[10][5] =
    {
        {1, 0},
        {1, 1},
        {4, 2, 4, 8, 6},
        {4, 3, 9, 7, 1},
        {2, 4, 6},
        {1, 5},
        {1, 6},
        {4, 7, 9, 3, 1},
        {4, 8, 4, 2, 6},
        {2, 9, 1}
    };
    
    int v = N%10, grad = (N-1)%magik[v][0] +1;
    return magik[v][grad];
}

int main(int argc, const char * argv[])
{
    init();
    
    int T; cin >> T;
     
    int S = 0;
    for(int i=0; i<T; ++i)
    {
        int t = read_long_2();
        S += ans(t);
        cout << S%10 << endl;
    }
    return 0;
}