Cod sursa(job #380352)

Utilizator milijrCristian Militaru milijr Data 5 ianuarie 2010 20:50:14
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<fstream>
using namespace std;
int abc(int n);
int upow(int n, int m);
int main()
{
	ifstream fin("cifra.in");
	ofstream fout("cifra.out");
	int t,tt,i,sum,p;
	long n;
	fin>>t;
	for(tt=0;tt<t;tt++)
	{
		fin>>n;
		sum=0;
		for(i=1;i<=n;i++)
		{
			p=i%abc(i);
			if(abc(i)==1)
				sum=(sum+i%10)%10;
			else
				if(abc(i)==2)
					if(p==0)
						sum=(sum+i%10)%10;
					if(p==1)
						sum=(sum+upow(i,2))%10;
				else
					if(abc(i)==4)
						if(p==0)
							sum=(sum+i%10)%10;
						if(p==1)
							sum=(sum+upow(i,2))%10;
						if(p==2)
							sum=(sum+upow(i,3))%10;
						if(p==3)
							sum=(sum+upow(i,4))%10;
		}
		fout<<sum<<endl;
	}
}
int abc(int n)
{
	if(n%10==0)
		return 1;
	if(n%10==1)
		return 1;
	if(n%10==2)
		return 4;
	if(n%10==3)
		return 4;
	if(n%10==4)
		return 2;
	if(n%10==5)
		return 1;
	if(n%10==6)
		return 1;
	if(n%10==7)
		return 4;
	if(n%10==8)
		return 4;
	if(n%10==9)
		return 2;
}
int upow(int n, int m)
{
	int i,upow;
	upow=1;
	for(i=1;i<=m;i++)
		upow=(upow*n)%10;
	return upow;
}