Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определить делится ли введённое число n на 15 
:(
    Опции темы
magnet
Дата 18.12.2015, 06:30 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











math64, в этом и прикол задачи, чтоб не переводя двоичный ряд в число выдать решение. По приведенному мной алгоритму можно вводить сколько угодно большое число сумма байт которого не привысит unsigned int64, т.е. в худщем случае (если все единицы) - это более 70-ти миллионов разрядов. Не хилый такой буфер ввода в 72 мегабайта =)

Вот обновленный код:
Код

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {
  int count, lngth;
  unsigned long int digit;
  if (argc<2) { printf("Binary digit expected\n"); return -1; } // Необходим хотя бы один аргумент
  for(count=0;count<100;count++) if(argv[1][count]!='0' && argv[1][count]!='1') break; // Длина числа до первого символа, отличного от 0 или 1
  if (count<1) { printf("Binary digit expected\n"); return -1; } // Если введено не двоичное число
  printf("Length=%d\n",count); // Вывод полученной длины числа
  lngth = count; // Запомним длину числа
  while(--count>=0) { // Разбираем каждый символ, начиная с конца строки
    digit = digit + ((argv[1][count] - 48) << (lngth-count-1)%4); // Преобразование строки побайтно. Суммирование всех байтов.
      printf("count=%d digit=%lu bit=%d\n",count,digit,(argv[1][count]-48)); // Вывод текущего результата для понимания работы
  }
  printf("\nsumm=%lu\n",digit); // Вывод конечного результата.
  if(digit%15 == 0) printf("Делится на 15\n"); // Если остаток от деления 0, то все число делится на 15
    else printf("Не делится на 15\n"); // или не делится, если есть остаток
  return 0;
}

В старом куда-то форматирование улетело и последние строчки пропали.

Этот ответ добавлен с нового Винграда - http://vingrad.com
  Вверх
volatile
Дата 18.12.2015, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(magnet @  18.12.2015,  06:30 Найти цитируемый пост)
Вот обновленный код:
Муть какая-то

Выше, math64Фантом давали норм. решение.

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0671 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.