Cod sursa(job #595724)

Utilizator palcuiealexAlex Palcuie palcuiealex Data 13 iunie 2011 19:35:33
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.09 kb
/***************************************************
 * Author: Alexandru Palcuie
 * Country: Romania
 * Email: alex [dot] palcuie [at] gmail [dot] com
 * Website: http://palcu.blogspot.com/
 * Year: 2011
****************************************************/

#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <queue>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstring>

using namespace std;

typedef vector<int> VI;
typedef vector<pair<int,int> > VPI;
typedef pair<int,int> PII;
typedef long long LL;
typedef unsigned long long ULL;

//Constants
const int NMAX = 30000;

//Global Vars

//Structs

//Solve Functions

int main()
{
        #ifndef ONLINE_JUDGE
        freopen("cifra.in","r",stdin);
        freopen("cifra.out","w",stdout);
        #endif

        int m[101][101];
        int i,j;
        for (int i=1; i<=100; ++i){
        	for (int j=1; j<=100; ++j){
        		m[i][j] = (unsigned long long)pow((double)(i%10),(double)(j%4+4))%10;
        	}
        }

        /*printf("  "); for(i=1;i<=100;++i) printf("%d ",i); printf("\n");
        for(i=1;i<=100;++i){
                printf("%d ",i);
                for (j=1; j<=100; ++j)
                	printf("%d ",m[i][j]);
                printf("\n");
        }
        int s10 = 0;
        for(i=1;i<=100;++i)
                s10+=m[i][i];
        cout<<s10<<endl;*/

        int n; scanf("%d\n",&n);
        char s[NMAX]; int len,sol,x;

        for(i=0;i<n;++i){
                fgets(s,NMAX,stdin);
                len = strlen(s); sol=0;

                if (len>2)
                        x = (s[len-3]-'0') * 10 + (s[len-2]-'0');
                else
                        x=s[0] - '0';

                for(j=1;j<=x;++j)
                        sol+=m[j][j];
                printf("%d\n",sol%10);
        }

        return 0;
}