Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Рассказы ΠΎ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Π½Π° языках Python ΠΈ C (БИ)Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 2

Автор ЕлисССв Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ Π‘Π΅Ρ€Π³Π΅Π΅Π²ΠΈΡ‡

Β Β printf("%d\n", values[i]);

}

ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ слСгка ΡΡ…ΠΈΡ‚Ρ€ΠΈΡ‚ΡŒ, Ссли ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Π·Π°Ρ€Π°Π½Π΅Π΅ извСстСн.

int values[255] = { 1,2,3,5,10,15,20 }, cnt = 7;

for(int i=0; i<cnt; i++) {

Β Β printf("%d\n", values[i]);

}

values[cnt] = 7;

cnt++;

МоТно ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ динамичСским распрСдСлСниСм памяти, хотя это Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС:

int *valuesArray = (int*)malloc(10*sizeof(int));

valuesArray[0] = 1;

valuesArray[1] = 3;

valuesArray[2] = 15;

valuesArray = (int*)realloc(valuesArray, 25*sizeof(int));

valuesArray[20] = 555;

valuesArray[21] = 777;

for(int i=0; i<25; i++) {

Β Β printf("%d\n", valuesArray[i]);

}

free(valuesArray);

Π’Π°ΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ значСния массива, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

valuesArray[16]
, Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ «мусор», Π½Π΅ΠΊΠΈΠ΅ значСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π΄ΠΎ этого Π² памяти. Π‘ΠΈ достаточно Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ язык, ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ Ρ‚ΠΎΠ½ΠΎΠΌ являСтся инициализация всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΈΡ… описании. Π’ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ содСрТит ошибок:

int x;

printf("x=%d\n", x);

Однако ΠΏΡ€ΠΈ Π΅Π³ΠΎ запускС вывСдСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 4196608, ΠΈΠ»ΠΈ 0, ΠΈΠ»ΠΈ 32, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ нСпрСдсказуСм. Π’ большой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρ‚Π°ΠΊΠΈΠ΅ ошибки ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слоТно Π½Π°ΠΉΡ‚ΠΈ, Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ всСгда.

АрифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅,Π΄Π΅Π»Π΅Π½ΠΈΠ΅:

x1 = 3

x2 = (2 * x1 * x1 + 10*x1 + 7)/x1

Π’ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ:

x3 = x1**10

print(x1, x2, x3)

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ:

x1 += 1

x1 -= 10

print(x1)

ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ ΠΎΡ‚ дСлСния:

x2 = x1 % 6

print(x2)

ΠŸΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Π΅ΠΌ сумму элСмСнтов массива:

values = [1,2,3,5,10,15,20]

sum = 0

for p in values:

Β Β Β Β sum += p

print(sum)

Для Π±ΠΎΠ»Π΅Π΅ слоТных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ

math
. ВычислСниС ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ корня:

import math

print(math.sqrt(x3))

Условия Π·Π°Π΄Π°ΡŽΡ‚ΡΡ отступами, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ†ΠΈΠΊΠ»Π°ΠΌ:

print (x1)

if x1 % 2 == 0:

Β Β Β Β print("x1 Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ число")

else:

Β Β Β Β print("x1 Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ число")

Python ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ вычислСния с большими числами, Ρ‡Ρ‚ΠΎ достаточно ΡƒΠ΄ΠΎΠ±Π½ΠΎ:

x1 = 12131231321321312312313131124141

print(10 * x1)

print(math.sqrt(x1))

МоТно вывСсти Π΄Π°ΠΆΠ΅ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» числа 1024, Ρ‡Ρ‚ΠΎ Π½Π΅ сдСлаСт Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€:

print(math.factorial(1024))

Π’ Π‘ΠΈ вычислСниС суммы элСмСнтов массива выглядит Ρ‚Π°ΠΊ:

int sum = 0;

for(int i=0; i<cnt; i++) {

Β Β sum += values[i];

}

printf("Sum=%d\n", sum);

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉ, этого Π½Π΅ Ρ…Π²Π°Ρ‚ΠΈΡ‚ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒΡΡ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ программистом, Π½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ достаточно для понимания Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π² ΠΊΠ½ΠΈΠ³Π΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ вСрнСмся ΠΊ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅.

2.Β ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ фокусы

Для Β«Ρ€Π°Π·ΠΌΠΈΠ½ΠΊΠΈΒ» рассмотрим нСсколько фокусов, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ числам. Никаких особых слоТностСй Π² Π½ΠΈΡ… Π½Π΅Ρ‚, Π½ΠΎ ΠΈΡ… Π·Π½Π°Π½ΠΈΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·Π²Π΅ΡΠ΅Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚ΡŒ Π·Π½Π°ΠΊΠΎΠΌΡ‹Ρ… Π·Π½Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ.

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΡƒΠΌΠ΅ числа Π½Π° 11

Рассмотрим простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€: 26 * 11 = 286

Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это Π² ΡƒΠΌΠ΅ просто, Ссли Π²Π·ΡΡ‚ΡŒ сумму чисСл ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² сСрСдину: 26 * 11 = 2 [2+6] 6

Аналогично 43 * 11 = 473, 71 * 11 = 781 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π§ΡƒΡ‚ΡŒ Π΄Π»ΠΈΠ½Π½Π΅Π΅ расчСт, Ссли сумма чисСл большС Π»ΠΈΠ±ΠΎ Ρ€Π°Π²Π½Π° 10. Но ΠΈ Ρ‚ΠΎΠ³Π΄Π° всС просто: Π² сСрСдину кладСтся младший разряд, Π° 1 ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ Π² ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ разряд:

47 * 11 = [4] [4 + 7 = 11] [7] = [4 + 1] [1] [7] = 517

94 * 11 = [9] [9 + 4 = 13] [4] = [10] [3] [4] = 1034

Π’ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ числа, ΠΎΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ Π½Π° 5

ΠŸΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ это Ρ‚ΠΎΠΆΠ΅ просто. Если число Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Ρƒ NM, Ρ‚ΠΎ пСрвая Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° β€” это число N, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π½Π° (N + 1), вторая Ρ‡Π°ΡΡ‚ΡŒ числа β€” всСгда 25. 352 = [3 * 4] [25] = 12 25

Аналогично:

252 = [2 * 3] 25 = 625 852= [8*9] 25 = 7225 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ΠžΡ‚Π³Π°Π΄Ρ‹Π²Π°Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°

ΠŸΠΎΠΏΡ€ΠΎΡΠΈΠΌ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π·Π°Π³Π°Π΄Π°Ρ‚ΡŒ любоС число. НапримСр 73. Π—Π°Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Ρ‰Π΅ большС Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒ ΠΎΡ‚Π³Π°Π΄Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ, попросим ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

‐ удвоим число (146)

‐ прибавляСм 12 (158)

‐ раздСлим Π½Π° 2 (79)

‐ вычтСм ΠΈΠ· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° исходноС число (79 - 73 = 6)

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΌΡ‹ ΠΎΡ‚Π³Π°Π΄Ρ‹Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ β€” 6. Π‘ΡƒΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ число 6 появляСтся нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠ΅ число Π·Π°Π³Π°Π΄Π°Π» Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ.

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈ, это доказываСтся ΠΎΡ‡Π΅Π½ΡŒ просто:

(2 * n + 12) / 2 - n = n + 6 - n = 6, нСзависимо ΠΎΡ‚ значСния n.

ΠžΡ‚Π³Π°Π΄Ρ‹Π²Π°Π½ΠΈΠ΅ чисСл

Π•ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ фокус с ΠΎΡ‚Π³Π°Π΄Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ чисСл. ΠŸΠΎΠΏΡ€ΠΎΡΠΈΠΌ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π·Π°Π³Π°Π΄Π°Ρ‚ΡŒ Ρ‚Ρ€Π΅Ρ…Π·Π½Π°Ρ‡Π½ΠΎΠ΅ число, числа Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ΄ΡƒΡ‚ Π² порядкС ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 752). ΠŸΠΎΠΏΡ€ΠΎΡΠΈΠΌ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

β€Β Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ число Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС (257)

β€Β Π²Ρ‹Ρ‡Π΅ΡΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· исходного числа (752 - 257 = 495)

‐ к ΠΎΡ‚Π²Π΅Ρ‚Ρƒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΆΠ΅, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС (495 + 594)

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡΡ число 1089, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ «фокусник» ΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΏΡƒΠ±Π»ΠΈΠΊΠ΅.

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈ это Ρ‚ΠΎΠΆΠ΅ нСслоТно Π΄ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ.

β€Β Π›ΡŽΠ±ΠΎΠ΅ число Π²ΠΈΠ΄Π° abc Π² дСсятичной систСмС счислСния прСдставляСтся Ρ‚Π°ΠΊ:

abc = 100 * a + 10 * b + c.

β€Β Π Π°Π·Π½ΠΎΡΡ‚ΡŒ чисСл abc - cba:

100 * a + 10 * b + c + 100 - 100 * c - 10 * b - a = 100 * a - 100 * c - (a - c) = 100 * (a - c) - (a - c)

‐ В.Β ΠΊ. ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ a - c > 0, Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅:

100 * (a - c) - (a - c) = 100 * (a - c) - 100 + 90 + 10 - (a - c) = 100 * (a - c - 1) + 10 * 9 + (10 - a + c)