powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / вопрос по математике
59 сообщений из 59, показаны все 3 страниц
вопрос по математике
    #37551715
ENO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 1 байтной переменной байт FF встречается 1 раз. В 2 байтной вроде 512. Сколько раз встретится в 3 байтной и 4 байтной?
...
Рейтинг: 0 / 0
вопрос по математике
    #37551744
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENO,
1) FF в младшем байте, или в любом месте?

2) В числе 0FFF0 считать что FF встречается 4 раза?
...
Рейтинг: 0 / 0
вопрос по математике
    #37551852
ENO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уточняю вопрос. Во скольки преременных встретится байт FF.
...
Рейтинг: 0 / 0
вопрос по математике
    #37551867
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уточнение непонятно
...
Рейтинг: 0 / 0
вопрос по математике
    #37551883
ENO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 байтная переменная может принимать 65535 значений от 0000 до FFFF. Байт FF использовать нельзя. Сколько значений сможет принимать переменная? На 512 меньше.
Так же надо для 3 и 4 байт.
...
Рейтинг: 0 / 0
вопрос по математике
    #37551921
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENO2 байтная переменная может принимать 65535 значений от 0000 до FFFF. Байт FF использовать нельзя . Сколько значений сможет принимать переменная? На 512 меньше.
Так же надо для 3 и 4 байт.
Ржунимагу
Модератор:
Содержание сообщений
Запрещается:
...
"Коверканье" слов русского языка.
...
Рейтинг: 0 / 0
вопрос по математике
    #37551962
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENOНа 512 меньше.Неверно.
...
Рейтинг: 0 / 0
вопрос по математике
    #37551972
ENO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,
ну так подскажи как верно
...
Рейтинг: 0 / 0
вопрос по математике
    #37552204
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно поставленная задача - это половина ответа.
...
Рейтинг: 0 / 0
вопрос по математике
    #37552336
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENOВ 2 байтной вроде 512.

а по моиму - 9...


хотя может я чего то не то понимаю...
...
Рейтинг: 0 / 0
вопрос по математике
    #37552407
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENOну так подскажи как верноВерно - на 511.
...
Рейтинг: 0 / 0
вопрос по математике
    #37552409
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENOБайт FF использовать нельзя

на границе байта или вообще нельзя учитывать 8 подряд идущих установленных в 1-цу битов?
...
Рейтинг: 0 / 0
вопрос по математике
    #37552415
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usmanна границе байта или вообще нельзя учитывать 8 подряд идущих установленных в 1-цу битов?
Да, по-моему, давно понятно - какие есть значения AX такие, что ни AL, ни Ah не равны 0FFh.
...
Рейтинг: 0 / 0
вопрос по математике
    #37552656
ENO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,

Точно! Совсем нельзя подряд 8 бит в 1. Придется перебрать))
...
Рейтинг: 0 / 0
вопрос по математике
    #37552770
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. 0FF0h - тоже нельзя? тогда при чём тут "байт"?
...
Рейтинг: 0 / 0
вопрос по математике
    #37552827
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENOUsman,

Точно! Совсем нельзя подряд 8 бит в 1. Придется перебрать))

Блондинко плакало... .... причём, канкретна....

Уважаемый ТС, либо мы ищем восемь бит подряд, выставленные в 1, либо ... либо в двухбайтной переменной 0xFF встречается тоже только один раз. И это верно и для 4-х байтной и для 8-байтной...

А вот это реально бред для условия задачи: ENO... В 2 байтной вроде 512. ...
...
Рейтинг: 0 / 0
вопрос по математике
    #37553090
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENOбайт FF
SIMPLicity_Уважаемый ТС, либо мы ищем восемь бит подряд, выставленные в 1, либо ...
Не-не-не. Никаких "либо". Если БАЙТ, то не просто 8 бит подряд, а 8 бит подряд, по границам кратным 8. В 2-байтном слове всегда 2 байта, в тч. равных FF. А в 3-байтном их всегда 3.
И при чем тут математика?
...
Рейтинг: 0 / 0
вопрос по математике
    #37553237
ENO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да чтож тут непонятного?))
Я думал, что хватит по границе байт. Такая задача типа про автобусные билетики - чистая комбинаторика. Теперь точно понял, что нужно 8 бит подряд без учета границы байт. Кроме перебора способа не вижу. Выкину конечно участки, где байт в явном виде встречается. Так что предлагать можно эффективные решения и той, и той задачи.
...
Рейтинг: 0 / 0
вопрос по математике
    #37553238
ENO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_,

Вроде, потому что от "фанаря" написал) Теперь думаю, что вроде 256 раз))
...
Рейтинг: 0 / 0
вопрос по математике
    #37553263
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
ENOДа чтож тут непонятного?))
Я думал, что хватит по границе байт.
Непонятно, кому и на что хватит.
...
Рейтинг: 0 / 0
вопрос по математике
    #37553267
xen2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
байт без FF - 255 значений
2 байта - 255*255
3 - 255*255*255
4 - 255*255*255*255
...
Рейтинг: 0 / 0
вопрос по математике
    #37553711
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENO , не могу въехать, никак: что Вы хотите?
Если посчитать, сколько есть комбинаций из 8 единиц ПОДРЯД, то: столько же, сколько сдвигов для переезда значения FF в левый байт. Те. для 16 бит 8 сдвигов, для 32 бит 24 сдвига.
Если почитать, сколько есть комбинаций из 8 единиц, ЛЮБЫХ (не только подряд), то: пред.резултат * 8. Те. для 16 бит 8*8=64. Это на вскидку, сорри, но думать сильно лень.
...
Рейтинг: 0 / 0
вопрос по математике
    #37553745
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если 8 битов подряд в любой позиции, то задача решается так:

Берется количество оставшихся бит n
и тогда
количество комбинаций = 2^n * (n+1)
где
2^n - количество цифр образуемых комбинацией свободных битов
n+1 - количество сдвигов 8 бит в числе


Для 24 бит, n = 16
Количество комбинаций = 2^16 * 17 = 1114112
...
Рейтинг: 0 / 0
вопрос по математике
    #37553857
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Worobjoff , Вы посчитали сюда перестановки одинаковых битов.
А в 9 битах будет n=1 и 2^1*2=4 ?

Но да: Вы правы про n+1. Сорри, тут наврала. Значит комбинаций из 8 ПОДРЯД будет n+1 , а ЛЮБЫХ n*8+1
Хотите проверим?
...
Рейтинг: 0 / 0
вопрос по математике
    #37553890
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВХотите проверим?Хочу
...
Рейтинг: 0 / 0
вопрос по математике
    #37553984
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Должен признаться что решил задачу очень поверхностно.
Вот алгоритм который решает задачу "в лоб".
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
   public static void Test() {
      int count = 0, count2 = 0;
      for (int i = 7; i < 0xFFFFFF; i++) {
         if (HasFF(i))
            count++;
         if (HasFFOnly(i))
            count2++;
      }
      Console.WriteLine();
      Console.WriteLine("Любых комбинаций восьмерок {0}", count);
      Console.WriteLine("Комбинаций только восьмерок {0}", count2);
   }

   private static bool HasFF(int num) {
      int count = 0;
      for (int i = 0; i < 32; i++) {
         if ((num & (int)1) > 0) 
            count++;
         else 
            count = 0;
         if (count == 8)
            return true;
         num = num >> 1;
      }
      return false;
   }

   private static bool HasFFOnly(int num) {
      int count = 0;
      bool had8 = false;
      bool had9 = false;
      for (int i = 0; i < 32; i++) {
         if ((num & (int)1) > 0)
            count++;
         else
            count = 0;
         if (count == 8)
            had8 = true;
         if (count == 9)
            had9 = true;
         num = num >> 1;
      }
      return had8 & !had9;
   }
Результат:
Любых комбинаций восьмерок 587007
Комбинаций только восьмерок 308912
...
Рейтинг: 0 / 0
вопрос по математике
    #37554197
ENO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Worobjoff,

Спасибо!
Надо любых комбинаций.
Более эффективный алгоритм проверки 1 числа существует?
Во-первых не 31 раз сдвигать, а логарифм числа по степени 2.
Может еще какие идеи.
...
Рейтинг: 0 / 0
вопрос по математике
    #37554270
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENO,

Код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
#include <cstdio>
#include <cstdlib>
using namespace std;

typedef unsigned short   WORD;
typedef unsigned long    DWORD;

int main()
{
	DWORD a, b, c, d, e;
	char f[ 1024 ];

	for (a = b =  0 ; b < (DWORD)- 1 ; b++)
	{
		_itoa(b, f,  2 );
		for (c = e =  0 , d = b; c < sizeof(DWORD) *  8 ; c++)
			e += (((d >> c) & 0xFF) == 0xFF);

		if (e >  0 )
			printf("%0.10d) %0.10d = 0x%0.8X = %s (%0.2d)\n", ++a, b, b, f, e);
	}

	return  0 ;
}


Фрагмент вывода
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
№           Dec          Hex          Bin      (Кол-во 0xFF)
 0000000001 )  0000000255  = 0x000000FF =  11111111  ( 01 )
 0000000002 )  0000000510  = 0x000001FE =  111111110  ( 01 )
 0000000003 )  0000000511  = 0x000001FF =  111111111  ( 02 )
 0000000004 )  0000000767  = 0x000002FF =  1011111111  ( 01 )
 0000000005 )  0000001020  = 0x000003FC =  1111111100  ( 01 )
 0000000006 )  0000001021  = 0x000003FD =  1111111101  ( 01 )
 0000000007 )  0000001022  = 0x000003FE =  1111111110  ( 02 )
 0000000008 )  0000001023  = 0x000003FF =  1111111111  ( 03 )
 0000000009 )  0000001279  = 0x000004FF =  10011111111  ( 01 )
 0000000010 )  0000001534  = 0x000005FE =  10111111110  ( 01 )
 0000000011 )  0000001535  = 0x000005FF =  10111111111  ( 02 )
 0000000012 )  0000001791  = 0x000006FF =  11011111111  ( 01 )
 0000000013 )  0000002040  = 0x000007F8 =  11111111000  ( 01 )
 0000000014 )  0000002041  = 0x000007F9 =  11111111001  ( 01 )
 0000000015 )  0000002042  = 0x000007FA =  11111111010  ( 01 )
 0000000016 )  0000002043  = 0x000007FB =  11111111011  ( 01 )
 0000000017 )  0000002044  = 0x000007FC =  11111111100  ( 02 )
 0000000018 )  0000002045  = 0x000007FD =  11111111101  ( 02 )
 0000000019 )  0000002046  = 0x000007FE =  11111111110  ( 03 )
 0000000020 )  0000002047  = 0x000007FF =  11111111111  ( 04 )
 0000000021 )  0000002303  = 0x000008FF =  100011111111  ( 01 )
 0000000022 )  0000002558  = 0x000009FE =  100111111110  ( 01 )
 0000000023 )  0000002559  = 0x000009FF =  100111111111  ( 02 )
 0000000024 )  0000002815  = 0x00000AFF =  101011111111  ( 01 )
 0000000025 )  0000003068  = 0x00000BFC =  101111111100  ( 01 )
 0000000026 )  0000003069  = 0x00000BFD =  101111111101  ( 01 )
 0000000027 )  0000003070  = 0x00000BFE =  101111111110  ( 02 )
 0000000028 )  0000003071  = 0x00000BFF =  101111111111  ( 03 )
 0000000029 )  0000003327  = 0x00000CFF =  110011111111  ( 01 )
 0000000030 )  0000003582  = 0x00000DFE =  110111111110  ( 01 )
 0000000031 )  0000003583  = 0x00000DFF =  110111111111  ( 02 )
 0000000032 )  0000003839  = 0x00000EFF =  111011111111  ( 01 )
 0000000033 )  0000004080  = 0x00000FF0 =  111111110000  ( 01 )
 0000000034 )  0000004081  = 0x00000FF1 =  111111110001  ( 01 )
 0000000035 )  0000004082  = 0x00000FF2 =  111111110010  ( 01 )
 0000000036 )  0000004083  = 0x00000FF3 =  111111110011  ( 01 )
 0000000037 )  0000004084  = 0x00000FF4 =  111111110100  ( 01 )
 0000000038 )  0000004085  = 0x00000FF5 =  111111110101  ( 01 )
 0000000039 )  0000004086  = 0x00000FF6 =  111111110110  ( 01 )
 0000000040 )  0000004087  = 0x00000FF7 =  111111110111  ( 01 )
 0000000041 )  0000004088  = 0x00000FF8 =  111111111000  ( 02 )
 0000000042 )  0000004089  = 0x00000FF9 =  111111111001  ( 02 )
 0000000043 )  0000004090  = 0x00000FFA =  111111111010  ( 02 )
 0000000044 )  0000004091  = 0x00000FFB =  111111111011  ( 02 )
 0000000045 )  0000004092  = 0x00000FFC =  111111111100  ( 03 )
 0000000046 )  0000004093  = 0x00000FFD =  111111111101  ( 03 )
 0000000047 )  0000004094  = 0x00000FFE =  111111111110  ( 04 )
 0000000048 )  0000004095  = 0x00000FFF =  111111111111  ( 05 )
 0000000049 )  0000004351  = 0x000010FF =  1000011111111  ( 01 )
 0000000050 )  0000004606  = 0x000011FE =  1000111111110  ( 01 )
 0000000051 )  0000004607  = 0x000011FF =  1000111111111  ( 02 )
 0000000052 )  0000004863  = 0x000012FF =  1001011111111  ( 01 )
 0000000053 )  0000005116  = 0x000013FC =  1001111111100  ( 01 )
 0000000054 )  0000005117  = 0x000013FD =  1001111111101  ( 01 )
 0000000055 )  0000005118  = 0x000013FE =  1001111111110  ( 02 )
 0000000056 )  0000005119  = 0x000013FF =  1001111111111  ( 03 )
 0000000057 )  0000005375  = 0x000014FF =  1010011111111  ( 01 )
 0000000058 )  0000005630  = 0x000015FE =  1010111111110  ( 01 )
 0000000059 )  0000005631  = 0x000015FF =  1010111111111  ( 02 )
 0000000060 )  0000005887  = 0x000016FF =  1011011111111  ( 01 )
 0000000061 )  0000006136  = 0x000017F8 =  1011111111000  ( 01 )
 0000000062 )  0000006137  = 0x000017F9 =  1011111111001  ( 01 )
 0000000063 )  0000006138  = 0x000017FA =  1011111111010  ( 01 )
 0000000064 )  0000006139  = 0x000017FB =  1011111111011  ( 01 )
 0000000065 )  0000006140  = 0x000017FC =  1011111111100  ( 02 )
 0000000066 )  0000006141  = 0x000017FD =  1011111111101  ( 02 )
 0000000067 )  0000006142  = 0x000017FE =  1011111111110  ( 03 )
 0000000068 )  0000006143  = 0x000017FF =  1011111111111  ( 04 )
 0000000069 )  0000006399  = 0x000018FF =  1100011111111  ( 01 )
 0000000070 )  0000006654  = 0x000019FE =  1100111111110  ( 01 )
 0000000071 )  0000006655  = 0x000019FF =  1100111111111  ( 02 )
 0000000072 )  0000006911  = 0x00001AFF =  1101011111111  ( 01 )
 0000000073 )  0000007164  = 0x00001BFC =  1101111111100  ( 01 )
 0000000074 )  0000007165  = 0x00001BFD =  1101111111101  ( 01 )
 0000000075 )  0000007166  = 0x00001BFE =  1101111111110  ( 02 )
 0000000076 )  0000007167  = 0x00001BFF =  1101111111111  ( 03 )
 0000000077 )  0000007423  = 0x00001CFF =  1110011111111  ( 01 )
 0000000078 )  0000007678  = 0x00001DFE =  1110111111110  ( 01 )
 0000000079 )  0000007679  = 0x00001DFF =  1110111111111  ( 02 )
 0000000080 )  0000007935  = 0x00001EFF =  1111011111111  ( 01 )
 0000000081 )  0000008160  = 0x00001FE0 =  1111111100000  ( 01 )
 0000000082 )  0000008161  = 0x00001FE1 =  1111111100001  ( 01 )
 0000000083 )  0000008162  = 0x00001FE2 =  1111111100010  ( 01 )
 0000000084 )  0000008163  = 0x00001FE3 =  1111111100011  ( 01 )
 0000000085 )  0000008164  = 0x00001FE4 =  1111111100100  ( 01 )
 0000000086 )  0000008165  = 0x00001FE5 =  1111111100101  ( 01 )
 0000000087 )  0000008166  = 0x00001FE6 =  1111111100110  ( 01 )
 0000000088 )  0000008167  = 0x00001FE7 =  1111111100111  ( 01 )
 0000000089 )  0000008168  = 0x00001FE8 =  1111111101000  ( 01 )
 0000000090 )  0000008169  = 0x00001FE9 =  1111111101001  ( 01 )
 0000000091 )  0000008170  = 0x00001FEA =  1111111101010  ( 01 )
 0000000092 )  0000008171  = 0x00001FEB =  1111111101011  ( 01 )
 0000000093 )  0000008172  = 0x00001FEC =  1111111101100  ( 01 )
 0000000094 )  0000008173  = 0x00001FED =  1111111101101  ( 01 )
 0000000095 )  0000008174  = 0x00001FEE =  1111111101110  ( 01 )
 0000000096 )  0000008175  = 0x00001FEF =  1111111101111  ( 01 )
 0000000097 )  0000008176  = 0x00001FF0 =  1111111110000  ( 02 )
 0000000098 )  0000008177  = 0x00001FF1 =  1111111110001  ( 02 )
 0000000099 )  0000008178  = 0x00001FF2 =  1111111110010  ( 02 )
 0000000100 )  0000008179  = 0x00001FF3 =  1111111110011  ( 02 )
...
Рейтинг: 0 / 0
вопрос по математике
    #37554314
ENO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,

а можно все интервалы от 1 до 2,147,483,647?
а то мне на бейсике трудно сдвиги делать)))
...
Рейтинг: 0 / 0
вопрос по математике
    #37554335
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENO,

Я ж приложил исходник - он расчитывает полностью для 4-х байтового числа...
...
Рейтинг: 0 / 0
вопрос по математике
    #37554368
ENO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,

у меня на машине кроме офиса нет ничего.
...
Рейтинг: 0 / 0
вопрос по математике
    #37554406
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENO,

Вывод в таком формате занимает 100МБ!
Скачай Dev-C++
...
Рейтинг: 0 / 0
вопрос по математике
    #37554466
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример на VBA который выводит только одно число - общее количество восьмерок смежных битов встречающихся во всех комбинациях чисел от 0 до FFFFFF (из 3 байтов).
Первые 254 числа игнорируются.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Private Masks( 24 ) As Long

Sub TestBitsInNumber()
   InitMasks
   Dim i As Long, count As Long
   count =  0 
   For i =  255  To &HFFFFFF
      count = count + GetFFCount(i)
   Next
   Debug.Print vbCrLf; "Всего восьмерок битов в числе из 3х батов "; count
End Sub

Function GetFFCount(num As Long) As Long
   Dim i As Long, count As Long
   count =  0 
   For i =  1  To  23 
      If Masks(i) And num >  0  Then count = count +  1 
   Next
   GetFFCount = count
End Function

Sub InitMasks()
   Dim m As Long, i As Long
   m = &HFF
   For i =  1  To  23 
      Masks(i) = m
      m = m *  2 
   Next
End Sub
...
Рейтинг: 0 / 0
вопрос по математике
    #37554625
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знач. так, мальчики. Не хотела думать, а вы раскрутили, заразы.
1) Если раскидать 8 единиц в разбивку, по N битам (остальные биты 0), то это сочетания, те. N!/(8!*(N-k)!)
2) Если 8 единиц подряд в N битах (остальные биты 0), то (N-8)+1
3) А если 8 подряд в N битах, а ост. биты любые, то это ряд, по i=(N-8) :
A 0 =0 ; A i =2*A i-1 +2 i-1
Думать дальше точно не буду.
...
Рейтинг: 0 / 0
вопрос по математике
    #37554632
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем виде, k вместо 8 и N>=k
1) N!/(k!*(N-k)!)
2) (N-k)+1
3) Ряд, по i=(N-k) : A 0 =0 ; A i =2*A i-1 +2 i-1
...
Рейтинг: 0 / 0
вопрос по математике
    #37554896
ENO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,

про 100 мб ты классно пошутил))
Файл уже больше 3 гигов, хотя я пишу интервалы и только четные проверяю)
...
Рейтинг: 0 / 0
вопрос по математике
    #37554908
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENO,

в торопях выпало слово "более"...
...
Рейтинг: 0 / 0
вопрос по математике
    #37555014
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВ1) Если раскидать 8 единиц в разбивку, по N битам (остальные биты 0), то это сочетания, те. N!/(8!*(N-k)!)
2) Если 8 единиц подряд в N битах (остальные биты 0), то (N-8)+1
3) А если 8 подряд в N битах, а ост. биты любые, то это ряд, по i=(N-8) :
A 0 =0 ; A i =2*A i-1 +2 i-1
Думать дальше точно не буду.+1

А что там проверяют в 3-х гигабайтах, даже думать не хочу :)
...
Рейтинг: 0 / 0
вопрос по математике
    #37566267
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENO,

чуть больше минуты счета:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
procedure TForm1.Button4Click(Sender: TObject);
label
  next, scan;
var
  value, temp, rest, count: cardinal;
begin;
  value:=$FFFFFFFF;
next:
  inc(value);
  temp:=value;
  rest:=24;
scan:
  if temp and $FF000000=0 then goto next;
  dec(rest);
  temp:=temp+temp;
  if rest>0 then goto scan;
  inc(count);
  if value<>$FFFFFFFF then goto next;
  count:=-count;
  Memo1.Lines.Add(Format('8 нулевых битов подряд из 32 встретились %d раз',[count]));
//8 нулевых битов подряд из 32 встретились 203122620 раз
  end;
...
Рейтинг: 0 / 0
вопрос по математике
    #37566309
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov , люди жеж неделю уже считают. А Вы отвлекаете.
...
Рейтинг: 0 / 0
вопрос по математике
    #37566310
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВ,

ну для 3х байтов еще не посчитано )
...
Рейтинг: 0 / 0
вопрос по математике
    #37566378
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENO,

В процедуре 11732808 в процессе экспериментов потерял инициализацию счетчика.
В качестве исправления ошибки:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
function CountZeros(BitCount: integer): integer;
label
  next, scan, found;
var
  shift, rest: integer;
  add, value, temp: cardinal;
begin;
  if (BitCount<8) or (BitCount>32)
  then Result:=0
  else begin;
    add:=1 shl (32-BitCount);
    shift:=BitCount-8;
    value:=$FFFFFFFF;
    Result:=-1;
found:
    inc(Result);
next:
    value:=value+add;
    temp:=value;
    rest:=shift;
scan:
    if temp and $FF000000=0 then goto found;
    dec(rest);
    temp:=temp+temp;
    if rest>=0 then goto scan;
    if value<>$FFFFFFFF then goto next;
    end;
  Result:=Result;
  end;

procedure TForm1.Button5Click(Sender: TObject);
var
  BitCount: integer;
begin;
  Memo1.Lines.Add('8 нулевых битов подряд в числе');
  for BitCount:=8 to 32 do
    Memo1.Lines.Add(Format(
      'длиной %d встретились %d раз',
      [BitCount, CountZeros(BitCount)]));
  end;



после 140 секунд расчетов получаем:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
8 нулевых битов подряд в числе
длиной 8 встретились 1 раз
длиной 9 встретились 3 раз
длиной 10 встретились 8 раз
длиной 11 встретились 20 раз
длиной 12 встретились 48 раз
длиной 13 встретились 112 раз
длиной 14 встретились 256 раз
длиной 15 встретились 576 раз
длиной 16 встретились 1280 раз
длиной 17 встретились 2815 раз
длиной 18 встретились 6139 раз
длиной 19 встретились 13294 раз
длиной 20 встретились 28616 раз
длиной 21 встретились 61280 раз
длиной 22 встретились 130640 раз
длиной 23 встретились 277408 раз
длиной 24 встретились 587008 раз
длиной 25 встретились 1238272 раз
длиной 26 встретились 2604801 раз
длиной 27 встретились 5465607 раз
длиной 28 встретились 11442208 раз
длиной 29 встретились 23904376 раз
длиной 30 встретились 49844624 раз
длиной 31 встретились 103752912 раз
длиной 32 встретились 215617024 раз
...
Рейтинг: 0 / 0
вопрос по математике
    #37566426
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov , ну а я о чем?
ИринаВ3) А если 8 подряд в N битах, а ост. биты любые, то это ряд, по i=(N-8) :
A 0 =0 ; A i =2*A i-1 +2 i-1
...
Рейтинг: 0 / 0
вопрос по математике
    #37566428
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENO,
Удовлетворены?

Впрочем, как вам сказали, задачка решалась и чистой комбинаторикой (спасибо Ирина) и чистым программированием (спасибо Александр).

Осталось только непонятным, чего добивались "ваши преподаватели" (с)...
...
Рейтинг: 0 / 0
вопрос по математике
    #37566435
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВ,

что-то у меня не получается равенства
...
Рейтинг: 0 / 0
вопрос по математике
    #37566455
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovчто-то у меня не получается равенства
Напр. N=16 :
A 8 = 2*A 7 + 2 7 = 2*576+128 = 1280
Ы?
...
Рейтинг: 0 / 0
вопрос по математике
    #37566473
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВ,

но
a1=2*a0+2^0=1
a2=2*a1+2^1=4
...
Рейтинг: 0 / 0
вопрос по математике
    #37566484
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой. Сорри. A 0 =1
...
Рейтинг: 0 / 0
вопрос по математике
    #37566487
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а нечетные числа вообще не получатся
...
Рейтинг: 0 / 0
вопрос по математике
    #37566498
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин. Точно. А после 16 разница, начинаеся опять 1,3,8,... Надо подумать. И почему 16.
...
Рейтинг: 0 / 0
вопрос по математике
    #37566501
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому, что мы дважды считаем число,
у которого две серии одинаковых бит
...
Рейтинг: 0 / 0
вопрос по математике
    #37566502
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovпотому, что мы дважды считаем число,
у которого две серии одинаковых бит
Почему?
...
Рейтинг: 0 / 0
вопрос по математике
    #37566503
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Число длиной 16 и более бит может содержать две группы по 8 единиц.
Такие числа надо считать 1 раз.
...
Рейтинг: 0 / 0
вопрос по математике
    #37566506
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сэнкс. Правильно. На 17 1 лишнее, и тд. Завтра додумаю.
...
Рейтинг: 0 / 0
вопрос по математике
    #37567059
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENO2 байтная переменная может принимать 65535 значений от 0000 до FFFF. Байт FF использовать нельзя. Сколько значений сможет принимать переменная? На 512 меньше.
Так же надо для 3 и 4 байт.

В 2байтной переменной может быть
256 * 256 разных значений.

По 256 значений в старшем и младшем байте.

Если запретить по одному значению (0xFF) и там, и там, будет
255 * 255 = 65025 разных значений.
...
Рейтинг: 0 / 0
вопрос по математике
    #37567077
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Додумала. Лишних ровно столько же сколько общее число для (N-8)-1.
Те. для N<=16 остается в силе
A i =2*A i-1 +2 i-1
А для N>16 добаляется поправка
A i =2*A i-1 +2 i-1 -A (i-8)-1
...
Рейтинг: 0 / 0
вопрос по математике
    #37567096
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВ,

Прекрасно )
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
function CountGE(n, k: integer): int64;
begin;
  if (k>0) and (n>=k) and (n<64)
  then if n>k
       then Result:=2 * CountGE(n-1, k)
                  + int64(1) shl (n-1-k)
                  - CountGE(n-1-k, k)
       else Result:=1
  else Result:=0;
  end;

procedure TForm1.Button7Click(Sender: TObject);
var
  BitCount: integer;
begin;
  Memo1.Lines.Add('8 &#237;&#243;&#235;&#229;&#226;&#251;&#245; &#225;&#232;&#242;&#238;&#226; &#239;&#238;&#228;&#240;&#255;&#228; &#226; &#247;&#232;&#241;&#235;&#229;');
  for BitCount:=8 to 63 do
    Memo1.Lines.Add(Format(
      '&#228;&#235;&#232;&#237;&#238;&#233; %d &#226;&#241;&#242;&#240;&#229;&#242;&#232;&#235;&#232;&#241;&#252; %d &#240;&#224;&#231;',
      [BitCount, CountGE(BitCount, 8)]));
  end;


8 нулевых битов подряд в числе
длиной 8 встретились 1 раз
длиной 9 встретились 3 раз
длиной 10 встретились 8 раз
длиной 11 встретились 20 раз
длиной 12 встретились 48 раз
длиной 13 встретились 112 раз
длиной 14 встретились 256 раз
длиной 15 встретились 576 раз
длиной 16 встретились 1280 раз
длиной 17 встретились 2815 раз
длиной 18 встретились 6139 раз
длиной 19 встретились 13294 раз
длиной 20 встретились 28616 раз
длиной 21 встретились 61280 раз
длиной 22 встретились 130640 раз
длиной 23 встретились 277408 раз
длиной 24 встретились 587008 раз
длиной 25 встретились 1238272 раз
длиной 26 встретились 2604801 раз
длиной 27 встретились 5465607 раз
длиной 28 встретились 11442208 раз
длиной 29 встретились 23904376 раз
длиной 30 встретились 49844624 раз
длиной 31 встретились 103752912 раз
длиной 32 встретились 215617024 раз
длиной 33 встретились 447424256 раз
длиной 34 встретились 927164672 раз
длиной 35 встретились 1918833407 раз
длиной 36 встретились 3966418935 раз
длиной 37 встретились 8189831118 раз
длиной 38 встретились 16892628772 раз
длиной 39 встретились 34809154744 раз
длиной 40 встретились 71662040224 раз
длиной 41 встретились 147403430720 раз
длиной 42 встретились 302949371776 раз
длиной 43 встретились 622151448064 раз
длиной 44 встретились 1276743801089 раз
длиной 45 встретились 2618240659979 раз
длиной 46 встретились 5365730442312 раз
длиной 47 встретились 10989446162796 раз
длиной 48 встретились 22493838984736 раз
длиной 49 встретились 46015527557024 раз
длиной 50 встретились 94082674938880 раз
длиной 51 встретились 192260447017088 раз
длиной 52 встретились 392694835608320 раз
длиной 53 встретились 801705113459967 раз
длиной 54 встретились 1635976358348787 раз
длиной 55 встретились 3336955730432926 раз
длиной 56 встретились 6803659503058384 раз
длиной 57 встретились 13866300143842688 раз
длиной 58 встретились 28249534713549664 раз
длиной 59 встретились 57530886659003072 раз
длиной 60 встретились 117121312684674304 раз
длиной 61 встретились 238353530161110784 раз
длиной 62 встретились 484912554463502593 раз
длиной 63 встретились 986203531078138383 раз
...
Рейтинг: 0 / 0
вопрос по математике
    #37567106
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуем повторить
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
procedure TForm1.Button7Click(Sender: TObject);
var
  BitCount: integer;
begin;
  Memo1.Lines.Add('8 нулевых битов подряд в числе');
  for BitCount:=8 to 63 do
    Memo1.Lines.Add(Format(
      'длиной %d встретились %d раз',
      [BitCount, CountGE(BitCount, 8)]));
  end;
...
Рейтинг: 0 / 0
вопрос по математике
    #37567347
dymka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нерекурсивная формула (без учета повторяющихся групп):

A i = (i+2) * 2 i-1
...
Рейтинг: 0 / 0
59 сообщений из 59, показаны все 3 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / вопрос по математике
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]