Cod sursa(job #199551)

Utilizator LuxOccultaRadu Dolea LuxOcculta Data 19 iulie 2008 13:07:29
Problema Cifra Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
using namespace std;

#include <iostream>
#include <fstream>
#include <string.h>

int power(int x,int y){
	x%=10;
	int d=1;
	while(y--)
		d=(x*d)%10;
    return d;
}
/*
int cifra(long long n){
	int s=0;
	while(n){
		s = s + power(n,n)%10;
		--n;
	}
	return s%10;
}
*/
int transforma(char s[101]){
	int len=strlen(s);
	if(len==1)
		return s[0]-'0';
	return (s[len-2]-'0')*10+s[len-1]-'0';
}

int main()
{
	int t,s=0,v[21];
	char sir[105];
	int n;
	v[1]=1;
	for(int i=2;i<=20;++i)
		v[i] = (v[i-1] + power(i,i))%10;
	v[0]=v[20];
	ifstream f("cifra.in");
	ofstream g("cifra.out");
	f>>t>>ws;
	while(t--){
		f>>sir>>ws;
		n=transforma(sir);
		s=0;
		s+=n/20*4;
		n%=20;
		//s+=(cifra(n))%10;
		s+=v[n];
		g<<s%10<<endl;
	}
	return 0;
}