Cod sursa(job #306162)

Utilizator popoiu.georgeGeorge Popoiu popoiu.george Data 19 aprilie 2009 21:51:42
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.53 kb
#include<fstream>
#include<stdio.h>
#include<math.h>
using namespace std;

fstream /*f("cifra.in",ios::in),*/g("cifra.out",ios::out);

long long t,v[40000];

long long ultima(long long a)
{
if(a%10==0)return 0;
else if(a%10==1)return 1;
else if(a%10==2)
	{
	if(a%4==0)return 6;
	else if(a%4==1)return 2;
	else if(a%4==2)return 4;
	else if(a%4==3)return 8;
	}
else if(a%10==3)
	{
	if(a%4==0)return 1;
	else if(a%4==1)return 3;
	else if(a%4==2)return 9;
	else if(a%4==3)return 7;
	}
else if(a%10==4)
	{
	if(a%2==0)return 6;
	else if(a%2==1) return 4;
	}
else if(a%10==5)return 5;
else if(a%10==6)return 6;
else if(a%10==7)
	{
	if(a%4==0)return 1;
	else if(a%4==1)return 7;
	else if(a%4==2)return 9;
	else if(a%4==3)return 3;
	}
else if(a%10==8)
	{
	if(a%4==0)return 6;
	else if(a%4==1)return 8;
	else if(a%4==2)return 4;
	else if(a%4==3)return 2;
	}
else if(a%10==9)
	{
	if(a%2==0)return 1;
	else if(a%2==1)return 9;
	}
return 0;
}

long long suma(long long a)
{
long long i,final=0;
for(i=1;i<=a;i++){final+=ultima(i);final%=10;}
//final%=10;
return final;
}

/*long long nr_cifre(long long a)
{
long long nr=0;
while(a)
	{
	a/=10;
	nr++;
	}
return pow(10,nr);
}*/

int main()
{
//char aux[100];
long i;
FILE * f;
f=fopen("cifra.in","r");
fscanf(f,"%lld",&t);
for(i=1;i<=t;i++)
	{
	fscanf(f,"%lld",&v[i]);	
	}
for(i=1;i<=t;i++)
	{
	if(v[i]<100)g<<suma(v[i])<<endl;
	else if(v[i]<1000)g<<suma(v[i]%100)<<endl;
	else if(v[i]<10000)g<<suma(v[i]%1000)<<endl;
	}
return 0;
}