Cod sursa(job #523138)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 17 ianuarie 2011 10:07:43
Problema A+B Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>
#include <string.h>
FILE *f=fopen("adunare.in","r");
FILE *g=fopen("adunare.out","w");

char a[101],b[101],c[102];

int main(void){
	register int i,j;
	
	register char ch;
	i=0;
	register unsigned long long x;
	fscanf(f,"%s",a+1);
	a[0] = strlen(a+1);
	for (i=1;i<=a[0]/2;i++) {
		char aux = a[i];
		a[i] = a[a[0]-i+1];
		a[a[0]-i+1] = aux;
		a[i]-='0';a[a[0]-i+1]-='0';
	}
	if (a[0] %2 == 1)
		a[a[0]/2+1]-='0';
	fscanf(f,"%s",b+1);
	b[0] = strlen(b+1);
	for (i=1;i<=b[0]/2;i++) {
		char aux = b[i];
		b[i] = b[b[0]-i+1];
		b[b[0]-i+1] = aux;
		b[i]-='0';b[b[0]-i+1]-='0';
	}		
	if (b[0] %2 == 1)
		b[b[0]/2+1]-='0';
	register int max=(a[0]<b[0]?a[0]:b[0]),t;
	for(i=1,t=0;i<=max;i++){
		c[i]=(a[i]+b[i]+t)%10;
		t=(a[i]+b[i]+t)/10;
	}
	c[0]=max;
	if(t!=0){
		c[++c[0]]=t;
	}
	for(i=c[0];i>=1;i--)
		fprintf(g,"%d",c[i]);
	return 0;
}