Главная страница
Навигация по странице:

  • =A2*15^4+B2*15^3+C2*15^2+D2*15+E2

  • Решение (программа на Python , И. Степанов): полный текст программы: for x in 0123456789ABCDE

  • Решение (программа на Python , А. Гладков): полный текст программы: for x in range (15)

  • include include using namespace std; unsigned long f(unsigned short int); int main() {

  • ЕГЭ 14. Позиционные системы счисления


    Скачать 1.05 Mb.
    НазваниеПозиционные системы счисления
    АнкорЕГЭ 14
    Дата13.01.2023
    Размер1.05 Mb.
    Формат файлаdoc
    Имя файлаege14.doc
    ТипДокументы
    #884857
    страница2 из 17
    1   2   3   4   5   6   7   8   9   ...   17

    Пример задания:


    Р-26. (демо-2023) Операнды арифметического выражения записаны в системе счисления с основанием 15.

    123x515 + 1x23315

    В записи чисел переменной x обозначена неизвестная цифра из алфавита 15-ричной системы счисления. Определите наименьшее значение x, при котором значение данного арифметического выражения кратно 14.

    Для найденного значения x вычислите частное от деления значения арифметического выражения на 14 и укажите его в ответе в десятичной системе счисления. Основание системы счисления в ответе указывать не нужно.

    Решение (Д. Кириенко):

    1. Число записано в 15-ричной системе счисления, а в задаче спрашивается про делимость на 14. Это неспроста, т.к. число 15 при делении на 14 даёт остаток 1, более того, при делении любой степени числа 15 на 14 получится остаток 1 (математики говорят, что все степени числа 15 по модулю 14 равны 1).

    2. Поэтому по модулю 14 сумма чисел в 15-ричной системе счисления

    123x5 + 1x233 ≡ 1 + 2 + 3 + x + 5 + 1 + x + 2 + 3 + 3 ≡ 20 + 2x = 6 + 2x (mod 14)

    Это как признак делимости на 9 в 10-й системе счисления, такой же признак делимости на b-1 будет в системе счисления с основанием b: сумма цифр должна делиться на b-1. Думаю, именно это и имелось в виду авторами.

    1. Тогда минимальное x, при котором 6 + 2x делится на 14, будет x = 4.

    2. Осталось ответ посчитать:

    (int("12345", 15) + int("14233", 15)) / 14

    (будем использовать "/", чтобы по виду ответа сразу было понятно, что делится нацело).

    1. Ответ 8767.

    Решение (И. Степанов):

    1. запишем оба слагаемых в развернутой записи в системе счисления с основанием 15:

    123x515 + 1x23315 =

    (1·154+2·153+3·152+x·15+5) + (1·154+x·153+2·152+3·15+3) =

    (2·154+2·153+5·152+ 3·15+8) + (x·153 +x·15)

    = (101250 + 6750 + 1125 + 45 + 8) + x · (3375 + 15) = 109178 + 3390·x

    1. нам нужно, чтобы выражение Y = 109178 + 3390·x делилось на 14

    2. остаток от деления 109178 на 14 равен 6; остаток от деления 3390 на 14 равен 2

    3. для того чтобы Y делилось на 14, остаток от деления Y на 14 должен быть равен 0 (14, 28 и т.д.) Попробуем сложить остатки. 6+2*x = 0, даст нам отрицательное значение x, значит нужно взять следующее значение остатка 6+2*x = 14 <=> 2*x = 8 <=> x =4.

    4. Y = 109178 + 3390·4 = 122738. В качестве ответа нужно поделить Y на 14, получим 8767

    5. Ответ 8767.

    Решение (электронные таблицы, П. Финкель):

    1. запишем первое число 123x5 по цифрам; известные цифры – в колонки A B C E, а в колонке D перечисляем все 15-ричные цифры (0…14):



    1. В колонке F записываем формулу: перевод 15-ричного числа в 10-ю систему: =A2*15^4+B2*15^3+C2*15^2+D2*15+E2

    получаем в столбце F все варианты первого числа:



    1. также по цифрам строим второе число 1x233:
      =G2*15^4+H2*15^3+I2*15^2+J2*15+K2



    1. в столбцах M, N и O считаем сумму двух чисел, остаток от деления на 14 и частное:



    1. применяем фильтр к колонке Остаток (или просто ищем строки, где остаток = 0):



    1. находим минимальное подходящее X = 4 и частное 8767

    2. Ответ 8767.

    Решение (программа на Python, И. Степанов):

    1. полный текст программы:

    for x in '0123456789ABCDE':

    a = int('123'+x+'5', 15) + int('1'+x+'233', 15)

    if a % 14 == 0:

    print( 'x =', x,'Otvet:', a//14 )

    break

    1. Ответ 8767.

    Решение (программа на Python, А. Гладков):

    1. полный текст программы:

    for x in range (15):

    a = 1*15**4 + 2*15**3 + 3*15**2 + x*15 + 5

    b = 1*15**4 + x*15**3 + 2*15**2 + 3*15 + 3

    if (a+b) %14 == 0:

    print( (a+b) // 14 )

    break

    1. Ответ 8767.

    Решение (программа на C++, Л. Виноградова):

    1. полный текст программы:

    #include

    #include

    using namespace std;

    int main() {

    int x,a,b;

    for(x=0;x<15;x++) {

    a=1*pow(15,4)+2*pow(15,3)+3*pow(15,2)+x*15+5;

    b=1*pow(15,4)+x*pow(15,3)+2*pow(15,2)+3*15+3;

    if ((a+b)%14==0) {

    cout<<(a+b)/14;

    break;

    }

    }

    }

    1. Ответ 8767.

    Решение (программа на С++, А. Родионов):

    1. полный текст программы:

    #include

    #include

    using namespace std;

    unsigned long f(unsigned short int);

    int main()

    {

    const unsigned short int d=14; // делитель

    unsigned short int x;

    for( x = 0; f(x) % d; x++ );

    cout << f(x) / d;

    return 0;

    }
    unsigned long f(unsigned short int x)

    {

    const unsigned short int Osn=15, n=5; // Основание системы

    // счисления и разрядность чисел

    unsigned long s=0;

    // Массивы a и b с числами

    unsigned short int a[n]{1,2,3,0,5},b[n]{1,0,2,3,3},i;

    a[3] = b[1] = x; // Запись значения x в нужный разряд

    for( i = 5; i; i-- )

    s += a[n-i]*pow(Osn,i-1) + b[n-i]*pow(Osn,i-1);

    return s;

    }

    1. Ответ 8767.



    1   2   3   4   5   6   7   8   9   ...   17


    написать администратору сайта