Cod sursa(job #549336)

Utilizator impulseBagu Alexandru impulse Data 8 martie 2011 14:36:26
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb
#include<fstream>
#include<math.h>
#include<string>
using namespace std;

int numb[30000], k;

int reducePower(int pw, int num)
{
    if(pw == 1)
        return 1;
    if(num == 0)
        return 0;
    if(num == 1)
        return 1;
    if(num == 5)
        return 1;
    if(num == 6)
        return 1;

    if(num == 2 || num == 3 || num == 7 || num == 8)
    {
        pw -= 1;
        int k = pw / 8;
        pw -= 4*2*k;
        if(pw + 1 >= 5)
            return (pw - 3);
        return (pw + 1);
    }
    if(num == 4 || num == 9)
    {
        pw -= 1;
        int k = pw / 4;
        pw -= 2*2*k;
        if(pw + 1 >= 3)
            return (pw - 1);
        return (pw + 1);
    }
}


int main()
{
    ifstream fin("cifra.in");
    int counter = 0;
    fin>>k;
    string line;
    line.reserve(101);
    getline(fin, line);
    ofstream fout("cifra.out");
    int nowpw = 0;
    for(int c = 0; c < k; c++)
    {
        getline(fin, line);
        if(counter != 0)
        {
            fout<<endl;
            numb[counter] += numb[counter-1];
        }
        if(((int)line[line.size() - 1] - 48)>= 1)
        {
            int n = ((int)line[line.size() - 1] - 48);
            numb[counter] += pow(n, reducePower(counter+1, n));
            numb[counter] %= 10;
        }
        fout<<numb[counter];
        counter++;
    }
    fin.close();
    fout.close();
    return 0;
}