ТОП 10:

ГЛАВА 3. Позиционная запись числа



 

Натуральное число можно записать так: , где ai – цифра в i –ой позиции. При работе с натуральными числами основными являются два алгоритма [26]:

§ выделение последней цифры;

§ удаление этой цифры из числа.

Используя операции получения остатка и частного от деления на 10, можно последовательно получить все цифры числа. Кроме того, при разработке алгоритмов используется представление числа через его цифры в виде суммы:

 

= an·10n + an-1·10n-1+…+a2·102 + a1·101+ a0·100. (3.1)

 

Листинг 3.1. Дано натуральное n. Заменить в этом числе порядок цифр на обратный. Новое число обозначить через nn. Выделяя последовательно цифры ai числа n, как остаток от деления на 10, перенести их в новое число nn= nn·10+ai.

 

//L3_1.cpp

#include <iostream>

using namespace std;

int main()

{

setlocale(LC_CTYPE,"russian");

int n, nn;

do

{

cout << "Введите натуральное число ";

cin >> n;

}while (n <= 0);

nn = 0;

while (n > 0)

{

nn = nn*10+n%10;

n/ = 10;

}

cout << "Полученное число "<<nn<<'\n';

return 0;

}

 

Результат работы программы листинга 3.1 приведен на рис. 3.1:

 

 

Рис. 3.1. Результат работы программы листинга 3­.1

 

 

Листинг 3.2. Дано натуральное число n. Удалить из записи этого числа цифры 5 и 0, оставив остальные в том же порядке, что и в исходном числе. Для этого воспользоваться записью числа в виде разложения с использованием цифр и степеней числа 10, представленного формулой (3.1).

 

//L3_2.cpp

#include <iostream>

using namespace std;

int main()

{

setlocale(LC_CTYPE,"russian");

int n,nn,k = 1,c;

do

{

cout << "Введите натуральное число ";

cin >> n;

}while (n <= 0);

nn = 0;

while (n > 0)

{

c = n%10;

if(c!= 5 && c!= 0)

{

nn = nn+c*k;

k* = 10;

}

n/ = 10;

}

cout << "Полученное число "<<nn<<'\n';

return 0;

}

 

На рис. 3.2 представлен результат выполнения программы листинга 3.2.

 

 

Рис. 3.2. Результат работы программы листинга 3­.2

 

Листинг 3.3. Найти трехзначное натуральное число, сумма цифр которого равна заданному числу. Прежде всего, следует отметить, что сумма цифр не может превышать 27, так как 9+9+9=27. Кроме того, если предположить, что k, j и i –цифры, то заданное число равно k + j + i.

 

//L3_3.cpp

#include <iostream>

using namespace std;

int main()

{

setlocale(LC_CTYPE,"russian");

int n,i,j,k;

do

{

cout << "Введите натуральное число <= 27 ";

cin >> n;

}while (n <=0 && n > 27);

for(i=0; i<=9; i++)

for(j=0; j<9; j++)

{

k = n-i-j;

if(k >= 1&& k <= 9)

cout << k+j*10+i*100 << '\n';

}

return 0;

}

Результат работы программы листинга 3.3 приведен на рис. 3.3:

 

 

Рис. 3.3. Результат работы программы листинга 3­.3

 

 

Листинг 3.4. Определить цифру в последовательности чисел. Например, определить n –ю цифру в последовательности Фибоначчи [4]: 1123581321… . Алгоритм заключается в определении диапазона числа, в котором находится эта позиция. Для этого определяется число позиций текущего числа и наращивается до тех пор, пока это значение меньше исходной позиции. Затем определяется число младших цифр, которые следует убрать из текущего числа, и определяется искомая цифра.

 

//L3_4.cpp

#include <iostream>

using namespace std;

int main()

{

setlocale(LC_CTYPE,"russian");

int tmp, n, l, dl, m, i1, i2, i3;

do

{

cout << "Введите число n ";

cin >> n;

}while (n <= 0);

i1 = 0;

i2 = 1;

l = 0;

while (n > l)

{

dl = 0;

m = i2;

while (m > 0) //Определяет число

{ //позиций в i2 -

dl++; //текущем числе

m / = 10; //Фибоначчи.

}

l+ = dl;

i3 = i1 + i2;

i1 = i2;

i2 = i3;

}

tmp = l-k;

while (tmp > 0)

{

i2 / = 10;

tmp--;

}

tmp = i1%10;

cout << n<< "-ая цифра = " << tmp << endl;

return 0;

}

 

На рис. 3.4 представлен результат выполнения программы листинга 3.4.

 

 

Рис. 3.4. Результат работы программы листинга 3­.4

 

 

Упражнения

1. Среди всех четырехзначных цифр определить число тех, у которых все цифры различны.

2. Найти количество чётных цифр натурального числа N.

3. Найти все натуральные числа, не превосходящие заданного числа N, и делящиеся на каждую из своих цифр.

4. Найти все натуральные числа, не превосходящие заданного числа N, десятичная запись которых есть строго возрастающая или строго убывающая последовательность цифр.

5. Найти все пары двухзначных натуральных чисел M и N, таких, что значение произведения M×N не изменится, если в числах изменить порядок цифр. Например, M =38 и N =83.

6. Найти все натуральные числа, не превосходящие заданного числа N, сумма квадратов цифр которых кратна 13.

7. Найти все четырехзначные числа , для которых справедливо .

8. Сложить все цифры какого-либо натурального числа, затем все цифры полученной суммы и так далее до тех пор, пока не получится цифра, которая называется корнем данного числа (например, число 34697, тогда 3+4+6+9+7=29, 2+9=11, 1+1=2). Найти корень заданного натурального числа.

9. Среди трехзначных натуральных чисел найти такие числа, у которых сумма цифр, сложенная с квадратом этой суммы, равна исходному числу.

10. Определить пятизначное число N такое, что шестизначные числа и связаны соотношением =3× .

11. Определить трехзначное число, удовлетворяющее условию: удалив старшую цифру и умножив полученное число на 7, получаем исходное число.

12. Натуральное число N называется числом Армстронга, если сумма цифр, каждая из которых возведена в степень, равную числу цифр в N, равна исходному числу. Найти все числа Армстронга, заключенные между числами N1 и N2.

13. Найти все автоморфные числа в промежутке от N1 до N2. Автоморфным называется число, квадрат которого заканчивается этим же числом. Например, число 25 и его квадрат 625.

14. Найти натуральные числа-палиндромы в диапазоне от N1 до N2. Например, число 1246421 является палиндромом.

15. Определить k-ю цифру последовательности 123456789101112131415… , в которой подряд записаны все натуральные числа.

16. Определить k-ю цифру последовательности 1101001000010000… , в которой подряд записаны степени числа 10.

17. Определить k-ю цифру последовательности 1392781243729… , в которой подряд записаны степени числа 3.

18. Определить k-ю цифру последовательности 1491625364964… , в которой подряд записаны все квадраты натуральных чисел.

19. Определить k-ю цифру последовательности 182764125216343… , в которой подряд записаны все кубы натуральных чисел.

20. Проверить, является ли заданное число палиндромом. Если это не палиндром, то заменить порядок цифр на обратный и сложить с исходным числом. Если полученное число не является палиндромом, то операцию повторять до тех пор, пока не получится число-палиндром. Для натуральных числе в диапазоне от N1 до N2 определить максимальное число действий преобразования числа в палиндром.

21. Найти все трехзначные числа, которые при увеличении на 1 делятся на 2, при увеличении на 2 делятся на 3, при увеличении на 3 делятся на 4, а при увеличении на 4 делятся на 5.

22. Найти все трехзначные числа, квадраты которых оканчиваются исходным числом.

23. Найти все трехзначные числа, сумма цифр которого и само число кратны 7.

24. Из натурального числа удалить все цифры от 0 до 3, оставив прежним порядок остальных цифр.

25. Среди всех трехзначных чисел найти такие, что исходное число равно среднему арифметическому всех чисел (включаяя и исходное число). Число состоит из тех же цифр,т.е. .

 

 







Последнее изменение этой страницы: 2016-07-11; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 100.24.125.162 (0.01 с.)