0 / 0 / 0
Регистрация: 08.07.2015
Сообщений: 9
|
||||||
1 | ||||||
Проверка делимости 1,11,111,.,11.1 на их позиции09.07.2015, 22:17. Показов 2973. Ответов 30
Метки нет (Все метки)
Дана последовательность из чисел (последовательность из единиц): 1, 11, 111, ..., 11..1. (до N)
Требуется определить делимость числа на его порядковый номер и записать в массив 0 или 1. Я написал решение, но с проблемами. Вот мой код:
У меня выводит, что 1%1=0, 11%2=1, 111%3=1 - ошибка. т.е. после первого цикла в is_div сохраняются только единицы. Помогите решить задачу. Вот что у меня получается:
0
|
09.07.2015, 22:17 | |
Ответы с готовыми решениями:
30
Проверка делимости чисел Проверка делимости числа на 11 Ввод чисел и проверка их делимости Проверка мобильного номера на соответствие формату +7(111)111-11-11 |
287 / 174 / 86
Регистрация: 19.04.2014
Сообщений: 1,095
|
|
09.07.2015, 22:43 | 2 |
Для начала 111 % 3 = 0.
0
|
0 / 0 / 0
Регистрация: 08.07.2015
Сообщений: 9
|
|
09.07.2015, 22:49 [ТС] | 3 |
НУ и я об этом, у меня выводит 1-цы
0
|
287 / 174 / 86
Регистрация: 19.04.2014
Сообщений: 1,095
|
|
09.07.2015, 22:55 | 4 |
Поясните мне смысле 26 и 27 строки зачем присваивать значение а[0] = "1" ?
0
|
0 / 0 / 0
Регистрация: 08.07.2015
Сообщений: 9
|
|
09.07.2015, 23:05 [ТС] | 5 |
Чтобы в цикле конкатенировать 1-цы в массив.
a[0]="1" a[1]="11" ... a[N-1]="11..1" (кол-во единиц=N) Проблема в алгоритме, а не вводе выводе
0
|
287 / 174 / 86
Регистрация: 19.04.2014
Сообщений: 1,095
|
|
09.07.2015, 23:12 | 6 |
Да ещё 1111%4 = 3. Остаток от деления возвращает 0 или 1 если деление идет на 2. То есть число четное или не четное. Если вы делите на число отличное от двух то остаток от деления будет не только 0 или 1.
0
|
287 / 174 / 86
Регистрация: 19.04.2014
Сообщений: 1,095
|
||||||
09.07.2015, 23:15 | 8 | |||||
1
|
0 / 0 / 0
Регистрация: 08.07.2015
Сообщений: 9
|
|
09.07.2015, 23:17 [ТС] | 9 |
is_dev - массив, в котором сохраняются ответы: 0-"число не делится на свой порядковый номер" 1-"делится"
0
|
287 / 174 / 86
Регистрация: 19.04.2014
Сообщений: 1,095
|
||||||
09.07.2015, 23:27 | 10 | |||||
Вот держи код.
Естественно здесь только та часть кода с которой у тебя проблема. Изменишь под свой код и все будет ок.
1
|
0 / 0 / 0
Регистрация: 08.07.2015
Сообщений: 9
|
|
09.07.2015, 23:30 [ТС] | 11 |
0
|
287 / 174 / 86
Регистрация: 19.04.2014
Сообщений: 1,095
|
|
09.07.2015, 23:31 | 12 |
Работоспособность кода выше можешь проверить по ссылке.
http://ideone.com/fudUK2
0
|
0 / 0 / 0
Регистрация: 08.07.2015
Сообщений: 9
|
|
09.07.2015, 23:40 [ТС] | 13 |
Например, если вводить N=250, то получится 1111111....111111, т.е. огромное число и это его невозможно одним условием проверить. Надо разбивать и проверять по частям, но у меня не получается.
Добавлено через 3 минуты Sn1p3rOk, спасибо за исходник. Можешь сделать для чисел, длина которых больше 10 цифр?
0
|
Модератор
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
|
|
09.07.2015, 23:41 | 14 |
Есть специальные библиотеки. Например, gmp.
Или Вы хотите самостоятельно реализовать деление длинных чисел? Тогда число надо хранить не в массиве строк, а в массиве unsigned long. Делить столбиком, считая каждый из элементов массива за одну цифру.
1
|
287 / 174 / 86
Регистрация: 19.04.2014
Сообщений: 1,095
|
|
09.07.2015, 23:48 | 15 |
Это уже бред получится, число из 250 знаков превышает количество частиц во Вселенной (видимой).
Я даже понять не смогу кому будет нужно число большее гугола. Прошу не путать с Google
0
|
0 / 0 / 0
Регистрация: 08.07.2015
Сообщений: 9
|
|
09.07.2015, 23:54 [ТС] | 16 |
длинные числа называются, чтоб чёрт их побрал
0
|
Модератор
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
|
|
09.07.2015, 23:58 | 17 |
В Вашем случае деление длинного числа на короткое (цифру), так как вряд ли номер элемента в последовательности выйдет за пределы unsigned long. В процессе деления столбиком Вам нужно будет делить двузначное число (первая цифра которого - это остаток от предыдущего деления) на цифру. Для этой операции используйте unsigned long long.
Добавлено через 2 минуты Простой же алгоритм. Поделите число на цифру столбиком на бумаге, а потом воспроизведите те же действия, но уже с большими цифрами.
0
|
287 / 174 / 86
Регистрация: 19.04.2014
Сообщений: 1,095
|
|
10.07.2015, 00:02 | 18 |
Абубакр, Боюсь что после 17-ти значного числа остаток от деление на их порядковых номер будет равен 1.
Добавлено через 3 минуты Но это моё предположение.
1
|
0 / 0 / 0
Регистрация: 08.07.2015
Сообщений: 9
|
|
10.07.2015, 00:07 [ТС] | 19 |
Shamil1,
unsigned long long **a=new *long long[N] for(i=0;i<N;++i) for(j=0;j<i;++j){ *a=new long long[i]; a[i][j]+='1'; } может так? Добавлено через 1 минуту Sn1p3rOk, нет, существуют - кратные 111, 1111,...)
0
|
Модератор
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
|
|
10.07.2015, 00:07 | 20 |
Вот первые сто остатков:
Код
[0,1,0,3,1,3,1,7,0,1,1,3,1,11,6,7,1,9,1,11,6,11,1,15,11,11,0,19,1,21,1,7,12,11,16,27,1,11,33,31,1,21,1,11,36,11,1,39,36,11,9,19,1,27,1,39,54,11,1,51,1,11,27,7,61,33,1,23,42,61,1,63,1,11,36,47,23,39,1,71,0,11,1,63,61,11,24,55,1,81,1,7,18,11,91,39,1,25,45,11]
1
|
10.07.2015, 00:07 | |
10.07.2015, 00:07 | |
Помогаю со студенческими работами здесь
20
MaskEditExtension. При записи содержимого Textbox в БД, вместо 111-111-111 11 пишется 11111111111 Проверка делимости на 16 Проверка делимости на 11 Проверка делимости числа на 11 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |