Cod sursa(job #47525)

Utilizator buradaandreiBurada Andrei buradaandrei Data 3 aprilie 2007 19:34:57
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream.h>
#include <math.h>
ifstream f("cifra.in");
ofstream g("cifra.out");

struct cifra
	{
	cifra *next;
	long x,i;
	}*p,*u;

void add(int x)
	{
	if (!p)
		{
		p=new cifra;
		p->i=1;
		p->x=x;
		p->next=0;
		u=p;
		}
	else
		{
		cifra *c=new cifra;
		c->i=u->i+1;
		c->x=(u->x+x)%10;
		c->next=0;
		u->next=c;
		u=c;
		}
	}

void tip(long poz)
	{
	cifra *c=p;
	while (c)
		{
		if (c->i==poz)
			{
			g<<c->x<<"\n";
			break;
			}
		c=c->next;
		}
	}

int ultim(long x)
	{
	long aux=x%10,a=x,cat=aux,i;
	x%=10;
	for (i=1;i<=a;i++)
		{
		x=x*a;
		if (x%10==aux) break;
		}
		cat=(x/a)%10;
	return cat;
	}

int main()
	{
	long aux,t,n,i,j,max;
	f>>t;
	max=1;
	for (i=1;i<=t;i++)
		{
		f>>n;
		for (j=max;j<=n;j++)
			{
			aux=ultim(j);
			add(aux);
			/*cifra[j]=cifra[j-1]+aux;
			cifra[j]%=10;*/
			}
		if (j>max) {max=j;g<<u->x<<"\n";}
		else
		tip(n);
		}
	f.close();
	g.close();
	return 0;
	}