Cod sursa(job #573104)

Utilizator veleanduAlex Velea veleandu Data 5 aprilie 2011 21:42:35
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<fstream>
#include<iostream>
using namespace std;


ifstream in("cifra.in");
ofstream out("cifra.out");

long n;
char X[105];
short T[15][15]; // T[i][0]= cate cifre distincte sunt ... T[i][1]=cu restul 1 .. est :)
short S[300];
long i,j,act,s,nr,M;

int main()
{
	in>>n;
	for(i=0; i<=9; ++i)
	{
		act=i;
		T[i][1]=act;
		do{
			T[i][0]++;
			T[i][T[i][0]]=act;
			act*=i;
			act%=10;
		}while(act!=T[i][1]);
	}
/*	for(i=1;i<=9; ++i)
	{
		cout<<i<<" : ";
		for(j=1; j<=T[i][0]; ++j)
			cout<<T[i][j]<<" ";
		cout<<endl;
	} */
	s=0;
	for(i=1; i<=200; ++i)
	{
		act=i%10;
		if(i%T[act][0]==0)
			s+=T[act][T[act][0]];
		else
			s+=T[act][i%T[act][0]];
		s%=10;
		S[i]=s;
	}
	for(i=1; i<=n; ++i)
	{
		in>>X;
		//cout<<X<<endl;
		M=strlen(X);
		if(M>=3)
			nr=M-1-2;
		else
			nr=M-1;
		s=0;
		
		while(nr<M)
		{	
			s*=10;
			s+=X[nr]-'0';
			//cout<<nr<<" "<<s<<" "<<X[nr]<<" | ";
			nr++;
		}
		//cout<<endl;
		//cout<<s<<endl;
		s%=200;
		out<<S[s]<<"\n";
	} 
	return 0;
}