dodawanie dużych liczb

0

Mam zrobić program, który będzie dodawał do siebie dwie duże liczb. Zakres liczb - od 1 do 10100. Algorytm już napisałem, ale muszę wysłać go przez internet na podstrone spoja . I system uznaje mi tylko pierwszą próbkę, przykład podany w zadaniu. Druga próbka zawiera liczby rzędu 109. A trzecia liczby do 10^100. Jakby ktoś mógłby mi pomóc w znalezieniu błędu w moim programie to byłbym bardzo wdzęczny. Osobie która będzie chętna mi pomóc wyśle program na PW. Nie chce programu umieszczać tutaj na forum bo nie wiem jak to pozniej będzie potraktowane przez system spoj, gdyby znleźli tego posta.

0

akurat woj zakres, uzyj, sprawdzone:

http://carramba.homelinux.org/ftp/4programmers/vlong.zip

bo nie sadze aby komukoliwek chcialo sie szukac bledu w programie do ktorego nie podales bezposredniego linka.

0

W sumie to nawet moge juz umieścić kod, wprawdzie system nie przeszedł mi ostatniego testu dla liczb do 10^100, ale zaliczyl 2 pierwsze testy. Pojawiło się to wczesniej na spoju a pozniej tutaj, wiec nie powinno byc problemu ...

#include <stdio.h>
#include <string.h>

int main ()
	{
	int t=0,i,j,l1Len,l2Len,m,p=0,l1p=0,l2p=0;
	char l1[101],l2[101],w[102];
        scanf("%d",&t);
	for(i=0;i<t;i++)
		{
		scanf("%s %s",l1,l2);
		m=101;
		l1Len=strlen(l1);
		l2Len=strlen(l2);	
		while(l1Len>0 || l2Len>0)
			{
			if(l1Len==0)
				l1p=0;
			else
				l1p=(int)l1[l1Len-1]-48;
			if(l2Len==0)
				l2p=0;
			else
				l2p=(int)l2[l2Len-1]-48;
			w[m]=(char)((l1p+l2p+p)%10)+48;
			p=(l1p+l2p+p)/10;
			if(l1Len>0) l1Len--;
			if(l2Len>0) l2Len--;
			m--;
			}
		if(p>0)
			{
			p=p+48;
			w[m]=(char)p;
			m--;
			}
		p=0;
		for(j=m+1;j<102;j++)
			printf("%c",w[j]);
		printf("\n");
		}
  	return 0;
	}

A więc to jest kod, i nie działa mi on dla liczb do 10100, dla liczb do 109 działa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1