Cod sursa(job #363476)

Utilizator indestructiblecont de teste indestructible Data 13 noiembrie 2009 15:25:36
Problema A+B Scor 100
Compilator cpp Status done
Runda Lista lui wefgef Marime 0.92 kb
#include <stdio.h>
#include <string.h>
#define N 1<<10
char v[N],b[N];
int p,q,A[N],B[N];
void add(int A[], int B[])
{
      int i, t = 0;
      for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=10)
              A[i] = (t += A[i] + B[i]) % 10;
      A[0] = i - 1;
}
void inversare1()
{
	int i,t;
	for (i=1; i<=A[0]/2; i++)
	{
		t=A[i];
		A[i]=A[A[0]-i+1];
		A[A[0]-i+1]=t;
	}
}
void inversare2()
{
	int i,t;
	for (i=1; i<=B[0]/2; i++)
	{
		t=B[i];
		B[i]=B[B[0]-i+1];
		B[B[0]-i+1]=t;
	}
}
inline int cif(char x)
{
	return x>='0' && x<='9';
}
int main()
{
	freopen("adunare.in","r",stdin);
	freopen("adunare.out","w",stdout);
	fgets(v+1,N,stdin);
	while (cif(v[A[0]+1]))
	{
		A[0]++;
		A[A[0]]=v[A[0]]-'0';
	}
	fgets(b+1,N,stdin);
	while (cif(b[B[0]+1]))
	{
		B[0]++;
		B[B[0]]=b[B[0]]-'0';
	}
	inversare1();
	inversare2();
	add(A,B);
	for (int i=A[0]; i>=1; i--)
		printf("%d",A[i]);
	return 0;
}