решение будет гораздо проще, если заметить, что остаток от деления шестнадцатеричного числа на 5 совпадает с остатком от деления на 5 его суммы цифр.
действительно, доказываем по индукции:
для числа из одной цифры это тривиально: число из одной цифры совпадает со своей суммой цифр. переход: пусть число из k цифр дает такой же остаток при делении на 5, что и сумма цифр + x + y + z. покажем, что число из (k + 1) цифры дает такой же остаток, что и сумма цифр + x + y + z + t: = 16 * + t = 15 * + + t). первое слагаемое делится на 5, второе по предположению дает такой же остаток, что и + x + y + z) + t, что и требовалось.у любой перестановки сумма цифр такая же, так что и остатки от деления на 5 . так что осталось найти сумму цифр исходного числа и найти остаток от деления её на 5, это и будет ответом.
python 3:
digits = "0123456789abcdef"
n = input()
s = sum(digits.index(digit) for digit in n)
print(s % 5)
#include "iostream"
#include "stdlib.h"
#include "locale.h"
#include "time.h"
using namespace std;
void create(int** arr, int n);
void show(int** arr, int n);
void max_quarter(int** arr, int n);
void find_min_max(int** arr, int n, int & pos_max_row, int & pos_min_col);
void change_row_column(int** arr, int n, int & pos_max_row, int & pos_min_col);
int main()
{
srand(time(null));
setlocale(lc_all, "russian");
bool flag = false;
int pos_max_row = 0, pos_min_col = 0;
int n=0;
int answer = 100;
int **a = 0;
a = (int**)malloc(n*sizeof(int));
if(! a)
{
int** a = (int**)malloc(n*sizeof(int));
}
while (answer ! = 0)
{
system("cls");
cout < < "меню\n";
cout < < "1) сформировать массив из случайных чисел размером n.\n";
cout < < "2) вывести массив на экран сформированный массив.\n";
cout < < "3) найти максимальный элемент в верхней и нижней четвертях матрицы\n";
cout < < "4) обмен значениями произвольной строки с произвольным столбцом\n";
cout < < "0) выход\n";
cout < < "ваш выбор: ";
while > > answer)) { //делаем проверку на ввод букв символов итд
cout < < "вы ввели символ или букву. требуется вводить только цифры\nввод: ";
cin.clear();
fflush(stdin);
}
system("cls");
switch (answer)
{
case 1:
{
cout < < "какого размера будет квадратичная матрица (x*x)? : ";
while > > n))
{ //делаем проверку на ввод букв символов итд
cout < < "вы ввели символ или букву. требуется вводить только цифры\nввод: ";
cin.clear();
fflush(stdin);
}
create(a, n);
cout < < "массив из случайных чисел сформирован! "< < endl; ;
system("pause");
break;
}
case 2:
{
if(n ! = 0){
cout < < "вывод массива на экран.\n";
show(a, n);
}else cout < < "посетите пункт 1" < < endl;
system("pause");
break;
}
case 3:
{
if(n ! = 0){
flag = true;
cout < < "нахождение максимального значения элемента в матрице.\n";
find_min_max(a,n, pos_max_row, pos_min_col);
}else cout < < "посетите пункт 1" < < endl;
system("pause");
break;
}
case 4:
{
if(flag == true)
{
cout < < "обмен значениями произвольной строки с произвольным столбцом.\n";
change_row_column(a,n, pos_max_row, pos_min_col);
}else cout < < "посетите пункт 3" < < endl;
system("pause");
break;
}
system("pause");
return 0;
}
}
}
void create(int **arr, int n)
{
for(int i=0; i< n; i++)
{
arr[i]=(int*)malloc(n*sizeof(int));
if(! arr[i])
{
arr[i]=(int*)malloc(n*sizeof(int));
}
for(int j=0; j< n; j++)
{
arr[i][j]= -200 + rand()%401;
}
}
}
void show(int **arr, int n)
{
for (int i=0; i< n; i++)
{
for(int j=0; j< n; j++)
{
printf("%7d", arr[i][j]);
}
printf("\n");
}
}
void find_min_max(int** arr, int n, int & pos_max_row, int & pos_min_col){
int min = arr[0][0];
int max = arr[0][0];
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(arr[i][j] > max)
{
max = arr[i][j];
pos_max_row = i;
}
if(arr[i][j] < min)
{
min = arr[i][j];
pos_min_col = j;
}
}
}
cout < < "минимальное значение массива: " < < min < < endl;
cout < < "максимальное значение массива: " < < max < < endl;
}
void change_row_column(int** arr,int n, int & pos_max_row, int & pos_min_col){
cout < < "массив до преобразования. " < < endl;
show(arr,n);
cout < < "изменяемая cтрока: " < < pos_max_row < < "\nизменяемый столбец: " < < pos_min_col < < endl;
for(int i = 0; i < n; i++){
int temp = arr[i][pos_min_col];
arr[i][pos_min_col] = arr[pos_max_row][i];
arr[pos_max_row][i] = temp;
}
cout < < "массив после преобразования. " < < endl;
show(arr,n);
}
Поделитесь своими знаниями, ответьте на вопрос:
Распишите числа от 4 до 10 в пятеричной системе счисления