Форум программистов, компьютерный форум CyberForum.ru

Дано натуральное число N (N <= 100). Построить натуральное число, состоящее из N цифр и содержащее только цифры 1 и 2, которое делится на 2N - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ бинарное дерево http://www.cyberforum.ru/cpp-beginners/thread588706.html
Нужна программа построение бинарного дерева ключом к которому является номер зачетной книжки студента, а информационная часть величина типа char, содержащая фамилию студента, написать функцию которая добавляет нового студента.
C++ Функция изменяющая сразу несколько строк Нужно, чтобы функция редактировала несколько входящих строк. char str1; char str2; void function1(char*& str1, char*& str2) Вышеприведённый код кривой, ибо, как гласит гугл, на входе имеем указатель не на char, поэтому создаётся временная переменная типа char*, присваивается ей значение этого указателя, и передаётся в функцию уже ссылка на неё (адрес этой временной переменной) - именно об... http://www.cyberforum.ru/cpp-beginners/thread588700.html
Варианты получения времени и даты C++
Здравствуйте всем! Возник такой вот вопрос: в проекте visual c++ (windows form приложение) мне понадобилось получить текущий час и записать его как число в переменную. Честно пытался разобраться сам, и даже нашёл кое-какую информацию (невнятное описание работы с неким классом ctime), но собственными силами реализовать поставленную задачу, увы не получилось. Прошу, подскажите как можно это...
Написать и протестировать функцию. C++
никак не могу сделать!даже не знаю с чего начать!!!!
C++ Создать класс http://www.cyberforum.ru/cpp-beginners/thread588649.html
Здравствуйте. Имеется код(исправный) программы для деления многочлена на многочлен. Подскажите пожалуйста как мне создать класс на основе этого кода? #include <stdio.h> #include <math.h> void PrintPolynom(float *p, int n) { for(int i=0;i<n;i++) printf("%+f x^%d",*(p+i),n-i-1); printf("\n"); } main()
C++ Даны натуральные число N и вещественное f. Вычислить Даны натуральные число N и вещественное f. Вычислить. подробнее

Показать сообщение отдельно
33parrots
3 / 3 / 0
Регистрация: 25.05.2012
Сообщений: 23
28.05.2012, 05:49     Дано натуральное число N (N <= 100). Построить натуральное число, состоящее из N цифр и содержащее только цифры 1 и 2, которое делится на 2N
Довольно долго думал - нашел как исхитриться и дойти примерно в 2 раза дальше. Но это тоже не вариант, поэтому делаем следующим образом:

Создаём тип данных - большой (нам хватит 400 элементов) массив из переменных типа булеан. Там мы будем хранить числа, записанные в 2ичной системе исчисления. 400 элементов хватит потому, что 24 = 16, что есть больше 10, значит 2400 значилеьно больше 10100.

Пишется простенькая функция умножения 2ух чисел, заданных в данном виде. бежим 2мя циклами по обеим строкам, и если а[i]=1 и b[j]=1, то с[i+j]++. Если с[i+j] после увеличения стало 0, значит прошёл перенос в следующий разряд, он делается циклом до тех пор, пока в итоге переноса наш увеличившийся разряд не примет значение 1, то бишь для него переноса нету.

Аналогично пишется функция суммы. Кстати умножение можно через сумму написать, но тогда желательно юзануть inline. Но можно и без инлайна, нам скорость работы программы в данном случае не важна, всё и так будет быстро.

Далее, у нас есть переменная Х, которая хранит число кратное 2n, есть переменная, которая хранит 10n. Переменную со значением 10n умножаем на 10102 (что равно 1010), получаем 10n+1.Плюсуем результат к Х, смотрим делится ли на 2n+1. Если нет - плюсуем ещё раз.

Такой переход делаем 100 раз, и получаем число из 1 и 2, которое делится на 2100, причём любой его кусок из Ы последних цифр делится на 2Ы

Для удобной подачи в 10ичной записи нужно сохранять в отдельном массиве что мы дописывали на каждом шаге - единичку или двоечку. Вывод на экран будет M первых элементов массива в обратном порядке.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru