Cod sursa(job #1094007)

Utilizator dana.jebeleanDana Jebelean dana.jebelean Data 28 ianuarie 2014 20:20:16
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <iostream>
#include <fstream>
#include <string.h>

#define nMAX 1000000

using namespace std;

//calculez ultima cifra a numarului k^k
int ultimaCifra(int k)
{
    int i;
    unsigned long int p = 1;
    for (i = 1; i <= k; i++)
    {
        p *= k;
        p %= 10;
    }
    return p;
}

void afisare(int v[], int n)
{
    int i;
    for(i = 0; i < 100; i++)
        cout << v[i] << " ";
}
//generez in vectorul v ultimele cifre pentru primele 100 de sume
//ultimele cifre ale sumelor se repeta din 100 in 100
void genereazaV(int v[])
{
    int i, s = 0;
    v[0] = 0;
    for (i = 1; i < 100; i++)
    {
        v[i] = (v[i - 1] + ultimaCifra(i)) % 10;
    }
}

int main()
{
    int v[100];
    ifstream f("cifra.in");
    ofstream g("cifra.out");
    int T, i, j, x;
    char N[nMAX], c;

    genereazaV(v);

    f >> T;
    for(i = 1; i <= T; i++)
    {
        f.get(c);
        f.get(N, nMAX);
        if(strlen(N) == 1)
            x = N[strlen(N)-1] - '0';
        else
            x = (N[strlen(N)-1] - '0') + (N[strlen(N)-2] - '0') * 10;
        g << v[x] << "\n";
    }

    return 0;
}