Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 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. Просмотров 1383. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2012, 04:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дано натуральное число N (N <= 100). Построить натуральное число, состоящее из N цифр и содержащее только цифры 1 и 2, которое делится на 2N (C++):

Дано натуральное число N. Найти наименьшее число М (N< M< 2N), которое делится на сумму цифр числа N (без оста - C++
Дано натуральное число N. Найти наименьшее число М (N&lt; M&lt; 2N), которое делится на сумму цифр числа N (без остатка). Если такого числа...

Заменить данное натуральное число на число, которое получается из исходного записью его цифр в обратном порядке. Например, дано число 156, нужно получ - C++
Вобщем,если не сложно,именно саму функцию помочь написать,ибо я просто не могу понять:) Добавлено через 22 минуты вот так...

Дано двузначное натуральное число. Получить другое натуральное число, в котором порядок цифр изменен на противоположный - C++
Помогите пожалуйста,Дано двузначное натуральное число. Получить другое натуральное число, в котором порядок цифр изменен на противоположный

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

Дано натуральное четырехзначное число. Определить все цифры в цифровой записи данного числа, на которые оно делится без остатка - C++
Дано натуральное четырехзначное число. Определить все цифры в цифровой записи данного числа, на которые оно делится без остатка. ...

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

4
33parrots
3 / 3 / 0
Регистрация: 25.05.2012
Сообщений: 23
28.05.2012, 05:18 #2
то, что считает до 10значного ничего странного, ибо

C++
1
2
int d;
d=pow(10,i);
Видать 10 в 11той степени > 8 в 11той = 2 в 33тей. Хоть 33 и прекрасная степень, но больше чем 32.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7490 / 4605 / 691
Регистрация: 29.11.2010
Сообщений: 12,590
28.05.2012, 05:21 #3
Используй в качестве хранения числа символьный массив.
0
lumpochka
0 / 0 / 0
Регистрация: 28.05.2012
Сообщений: 10
28.05.2012, 05:43  [ТС] #4
Я пыталась использовать для хранения числа символьный массив. Но у меня не получается по-другому реализовать эту задачку.. Видимо, знаний не хватает.. Если не затруднит, напишите, как это можно сделать.
0
33parrots
3 / 3 / 0
Регистрация: 25.05.2012
Сообщений: 23
28.05.2012, 05:49 #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 первых элементов массива в обратном порядке.
1
28.05.2012, 05:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2012, 05:49
Привет! Вот еще темы с ответами:

Дано натуральное число m. Найти такое натуральное n, что двоичная запись n получается из двоичной записи m изменением порядка цифр на обратный ( - C++
Дано натуральное число m. Найти такое натуральное n, что двоичная запись n получается из двоичной записи m изменением порядка цифр на...

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

Дано натуральное число а. Получить новое число, удалив из данного все цифры “2” C++ - C++
помогите с решением пожалуйста

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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