Salve a tutti,
Sto provando a risolvere questo esercizio:
We need to sum big numbers and we require your help.
Write a function that returns the sum of two numbers. The input numbers are strings and the function must return a string.
Io ho scritto questo codice
#include <stdlib.h>
#include <stdio.h>
char *add(const char *a, const char *b) {
unsigned long long int x,y,sum;
char *resend;
resend = malloc(30);
x = strtoull(a,NULL,10);
y = strtoull(b,NULL,10);
sum = x + y;
sprintf(resend, "%llu", sum);
return resend;
}
Il codice mi va a buon fine, supera tutti i test tranne ovviamente il seguente:
For inputs:
a = 63829983432984289347293874
b = 90938498237058927340892374089
Expected: 91002328220491911630239667963
Submitted: 18446744073709551614
Essendo 18446744073709551615 il più grande numero rappresentabile per un unsigned lond long int
Ho letto di un tipo denominato
__int128 che potrebbe risolvermi il problema ma non riesco a capire come usarlo in quanto mi da sempre lo stesso risultato.
Come posso rappresentare questo numero così elevato?
Grazie mille