Cod sursa(job #523117)

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

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

int main(void){
	register int i,j;
	
	register char ch;
	i=0;
	while(ch!='\n'){
		fscanf(f,"%c",&ch);
		if(ch!='\n')
			a[++i]=ch-'0';
		else
			break;
	}
	register int k=i,t,q;
	i=0;
	while(!feof(f)){
		fscanf(f,"%c",&ch);
		b[++i]=ch-'0';
	}
	q=i-1;
	register int max=(k<q?k:q);
	if(max==k && max!=q){
		register int p=1,u=max;
		while(p<=u){
			i=b[p];
			b[p]=b[u];
			b[u]=i;
			p++;
			u--;
		}
	}
	else if(max==q && max!=k){
		register int p=1,u=max;
		while(p<=u){
			i=a[p];
			a[p]=a[u];
			a[u]=i;
			p++;
			u--;
		}
	}
	for(i=max,t=0;i>=1;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=1;i<=c[0];i++)
		fprintf(g,"%d",c[i]);
	return 0;
}