Help plz...How do you store the numbers?(+) My idea is to solve it using DP of course. I have to use large numbers for the result, unfortunately. Which means, that if I have an array 50*500*sizeof(large num) i'll have 25000*sizeof(large num) large nums have about 100 digits, which is 100 bytes, so 25000*100=2500000=2 500 000 bytes, which is more than 1000K :( If I use just recursion and do not store the results, I'll get time limit exceeded. My idea was to have the large numbers as struct(=class=record) large { char* num; int size; } and allocate memory enough for each of the digits of every number. The problem is that in C i have to use mallloc and realloc(I know I can use new instead of malloc, but realloc is the real problem). Realloc, however, doesn't work OK on my computer and on TIMUS, as I have seen it :)) The strange fact is that if I trace the program, it works fine, and if I run it -> it fails. I have the same problem on another problem on timus, I do not remember which it was. Maybe because I am allocating too much memory on too many pieces, which are very small(a byte per time, about a million of times). So, I help someone has read that,and that someone is going to help about 1) What to use to solve the problem? 2) How can I solve the problem with realloc I used 2x500 static allocated bignums. (it's not the fastest though) (-) > My idea is to solve it using DP of course. I have to use large > numbers for the result, unfortunately. Which means, that if I have an > array > 50*500*sizeof(large num) > i'll have > 25000*sizeof(large num) > large nums have about 100 digits, which is 100 bytes, so > 25000*100=2500000=2 500 000 bytes, which is more than 1000K :( > If I use just recursion and do not store the results, I'll get time > limit exceeded. > My idea was to have the large numbers as > struct(=class=record) large { > char* num; > int size; > } > and allocate memory enough for each of the digits of every number. > The problem is that in C i have to use mallloc and realloc(I know I > can use new instead of malloc, but realloc is the real problem). > Realloc, however, doesn't work OK on my computer and on TIMUS, as I > have seen it :)) The strange fact is that if I trace the program, it > works fine, and if I run it -> it fails. I have the same problem on > another problem on timus, I do not remember which it was. Maybe > because I am allocating too much memory on too many pieces, which are > very small(a byte per time, about a million of times). > > So, I help someone has read that,and that someone is going to help > about > 1) What to use to solve the problem? > 2) How can I solve the problem with realloc What do you mean? > > My idea is to solve it using DP of course. I have to use large > > numbers for the result, unfortunately. Which means, that if I have an > > array > > 50*500*sizeof(large num) > > i'll have > > 25000*sizeof(large num) > > large nums have about 100 digits, which is 100 bytes, so > > 25000*100=2500000=2 500 000 bytes, which is more than 1000K :( > > If I use just recursion and do not store the results, I'll get time > > limit exceeded. > > My idea was to have the large numbers as > > struct(=class=record) large { > > char* num; > > int size; > > } > > and allocate memory enough for each of the digits of every number. > > The problem is that in C i have to use mallloc and realloc(I know I > > can use new instead of malloc, but realloc is the real problem). > > Realloc, however, doesn't work OK on my computer and on TIMUS, as > I > > have seen it :)) The strange fact is that if I trace the program, it > > works fine, and if I run it -> it fails. I have the same problem on > > another problem on timus, I do not remember which it was. Maybe > > because I am allocating too much memory on too many pieces, which > are > > very small(a byte per time, about a million of times). > > > > So, I help someone has read that,and that someone is going to help > > about > > 1) What to use to solve the problem? > > 2) How can I solve the problem with realloc Solve like this: Why did save all the result? Just save 2*500*sizeof(large num). Re: Solve like this: Posted by akademi 31 Oct 2004 17:54 Use round array |