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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
lumpochka
0 / 0 / 0
Регистрация: 28.05.2012
Сообщений: 10
#1

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

28.05.2012, 04:09. Просмотров 1321. Ответов 4
Метки нет (Все метки)

Дано натуральное число N (N <= 100). Построить натуральное число, состоящее из N цифр и содержащее только цифры 1 и 2, которое делится на 2^N.
Входные данные: в единственной строке задаётся число N (1 <= N <= 100).
Выходные данные: одно число из N цифр.
Примечание: стандартный целый тип позволяет хранить целые числа до 2^31.


Вот я написала программку. Она считает только до числа, которое делится на 2^10. А дальше не считает. Возможно, причина в том, что число не помещается в определённый мной тип переменной. Но я в этом мало что понимаю, я новичок. Может, кто-нибудь, подскажет, или исправит мой код? Ну очень нужно!!!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <math.h>
using namespace std;
int main(int argc, char* argv[])
{int i,a,b,c,d;
double k,s;
long chislo=2;
for(int i=1;i<=31;i++)
{k=2;
a=pow(k,i);
b=pow(k,i+1);
if(chislo%a==0&&chislo%b==0)
        {s=10;
       d=pow(s,i);
       chislo=chislo+k*d;}
else {s=10;
    d=pow(s,i);
    c=k*d; 
   chislo=chislo+d;}
}
cout<<chislo;
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2012, 04:09     Дано натуральное число N (N <= 100). Построить натуральное число, состоящее из N цифр и содержащее только цифры 1 и 2, которое делится на 2N
Посмотрите здесь:

Дано натуральное число n<100. Поменять порядок цифр числа на обратный. - C++
Дано натуральное число n&lt;100. Поменять порядок цифр числа на обратный. Буду очень благодарен)

Найти натуральное число M такое, что M делится на N и сумма цифр M делится на N - C++
256 мегабайт, 2 секунды Задано натуральное число N (1 ≤ N ≤ 100 000). Найдите натуральное число M такое, что M делится на N и сумма...

Заменить данное натуральное число на число, которое получается из исходного записью его цифр в обратном порядке - C++
1) Заменить данное натуральное число на число, которое получается из исходного записью его цифр в обратном порядке. Например, дано число...

Дано натуральное число .Если число содержит 5 цифр - C++
Дано натуральное число N.Если число содержит 5 цифр,то получить новое число М,которое образуется путем исключения средней цифры...

Дано натуральное число. Если число цифр в числе нечетно, то удалить его серединную цифру - C++
Дано натуральное число. Если число цифр в числе нечетно, то удалить его серединную цифру. Входные данные Дано натуральное число,...

Дано натуральное число n (n<=100). - C++
Дано натуральное число n (n&lt;=100). Hайти первую цифру числа n. Помогите пожалуйста Желательно на Си но можно и на Си++

Дано натуральное число n (n ≤ 100). - C++
Дано натуральное число n (n ≤ 100). В предположении, что n ≥ 10, найти предпоследнюю цифру числа n.

Дано натуральное число. Определить номер цифры «8» - C++
Дано натуральное число. Определить номер цифры «8» в нем, считая от конца числа. Если такой цифры нет, ответом должно быть число 0,...

Проверить, делится ли без остатка заданное натуральное число на каждую из своих цифр - C++
Мне нужно написать прогу, но нужно выполнить её без использования строк и массивов задание такое: Проверить, делится ли заданное...

дано натуральное число. Определить номер цифры 8 в нем - C++
дано натуральное число. Определить номер цифры 8 в нем.считая конца числа. Если такой цифры нет, ответом должно быт число 0,если таких цифр...

Дано натуральное число n. Переставить первую и последнюю цифры числа - C++
Дано натуральное число x. Переставить первую и последнюю цифры числа. У меня есть похожая задача. Вот она: #include &lt;stdlib.h&gt; ...

Дано натуральное число n. Вычислить сумму его цифр - C++
Помогите пожалуйстааа! :) Нужно на с++ реализовать эту задачку


Искать еще темы с ответами

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

C++
1
2
int d;
d=pow(10,i);
Видать 10 в 11той степени > 8 в 11той = 2 в 33тей. Хоть 33 и прекрасная степень, но больше чем 32.
MrGluck
Модератор
Эксперт CЭксперт С++
7002 / 4173 / 595
Регистрация: 29.11.2010
Сообщений: 11,075
28.05.2012, 05:21     Дано натуральное число N (N <= 100). Построить натуральное число, состоящее из N цифр и содержащее только цифры 1 и 2, которое делится на 2N #3
Используй в качестве хранения числа символьный массив.
lumpochka
0 / 0 / 0
Регистрация: 28.05.2012
Сообщений: 10
28.05.2012, 05:43  [ТС]     Дано натуральное число N (N <= 100). Построить натуральное число, состоящее из N цифр и содержащее только цифры 1 и 2, которое делится на 2N #4
Я пыталась использовать для хранения числа символьный массив. Но у меня не получается по-другому реализовать эту задачку.. Видимо, знаний не хватает.. Если не затруднит, напишите, как это можно сделать.
33parrots
3 / 3 / 0
Регистрация: 25.05.2012
Сообщений: 23
28.05.2012, 05:49     Дано натуральное число N (N <= 100). Построить натуральное число, состоящее из N цифр и содержащее только цифры 1 и 2, которое делится на 2N #5
Довольно долго думал - нашел как исхитриться и дойти примерно в 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 первых элементов массива в обратном порядке.
Yandex
Объявления
28.05.2012, 05:49     Дано натуральное число N (N <= 100). Построить натуральное число, состоящее из N цифр и содержащее только цифры 1 и 2, которое делится на 2N
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru