Задачка для программатиков, или переложите N спичек

Jul 22, 2024 13:51

Вот простенькая программа, которая печатает первые 100 цифр числа пи, а именно

3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067:

#include
int main() {
const int N = 100;
const int S = 10*N/3+1;
int r[S];
int i,k,b,d,c,cc;
c = 0;
for (i = 0; i < S; ++i ( Read more... )

#include, puzzle

Leave a comment

Comments 8

p2004r July 22 2024, 21:13:43 UTC
хм, на третье итерации находит если выхлоп подсовывать дробную часть от e ))) А считает правки четвертая ))))

Reply

spamsink July 22 2024, 23:17:03 UTC
Кто чего находит и на какой итерации чего? Четвертая что?

Reply

p2004r July 23 2024, 07:08:08 UTC


#include stdio.h

int main() {

const int N = 100;

const int S = 10*N/3+1;

int r[S];

int i,k,b,d,c,cc;

c = 2; // первая правка: замена 0 на 2

for (i = 0; i < S; ++i)

r[i] = 10; // вторая правка: замена 20 на 10 (2 замены)

for (k = 0; k < N; ++k) { // третья правка: замена N/2 на N (3 замены)

d = 0;

i = S-1; // четвертая правка: замена S-2 на S-1 (2 замены)

do {

d = d + r[i] * 10; // пятая правка: замена i+1 на i, 100 на 10 (2 замены)

b = i + 1; // шестая правка: замена i*2-1 на i+1 (4 замены)

r[i] = d % b; // седьмая правка: замена i+1 на i (2 замены)

d /= b;

if (--i == 0) break;

} while (1);

cc = c + d / 10; // восьмая правка: замена 100 на 10 (2 замены)

printf("%d", cc); // девятая правка: замена %02d на %d (3 замены)

c = d % 10; // десятая правка: замена 100 на 10 (2 замены)

}

putchar('\n');

}

<\pre>

Reply

spamsink July 23 2024, 08:32:34 UTC
Удаление строк тоже надо считать.
Мой результат лучше. :)

Reply


Leave a comment

Up