Сообщение от
ivagor
Если верить архиву с миллиардом знаков числа пи, который скачал на рутракере, та программа правильно считает максимум 16256 знаков (за 1.7 секунды). Для 8биток выше крыши
Эх, для меня это все очень сложно, качать мегабайтные архивы, сверять
Есть путь попроще:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <windows.h>
#define NUMS 280000
int main()
{
static long r[NUMS + 1];
long i, k;
long b, d;
long c;
long x;
c = 0;
for (i = 0; i < NUMS; i++)
r[i] = 2000;
for (k = NUMS; k > 0; k -= 14)
{
d = 0;
i = k;
while (1)
{
d += r[i] * 10000;
b = i * 2 - 1;
r[i] = d % b;
d /= b;
i--;
if (i == 0) break;
d *= i;
}
x = c + d / 10000;
if (x >= 10000)
{
printf("\r\nERROR (%d, %d)", x, k);
break;
}
printf("%.4d", (int)(c + d / 10000));
c = d % 10000;
}
return 0;
}
Сначала оно прикольно упало, когда я NUMS поставил 280000 , стек коротковат оказался, пришлось static вкрутить.
А потом оно секунд за 10 привело к ошибке:
ERROR (10000, 119266)
Ожидаем четыре цифры, а оказывается их пять, и пятая-то, вот досада, должна быть перенесена в уже выведенное, косяк-с, мда.
Итого - ошибка есть, возникает на 45-тысячной с копейками цифре, если кому надо меньше цифр (ограничен там восьмибитками или еще чего) - то и так сгодится