Главная / Задания по информатике / Группа B / Задание 16 / Задание 20. Ответы и решения

Задание 20. Ответы и решения

20.1         20.2         20.3          20.4          20.5    

 

20.1  ( ege.yandex.ru – 1)   Ниже на 4-х языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b.  Укажите наибольшее из таких чисел x,  при вводе которых алгоритм печатает сначала 3, а потом 5.

Бейсик Паскаль
DIM X, A, B AS INTEGER
INPUT X
A=0: B=1
WHILE X > 0
   A = A+1
   B = B*(X MOD 10)
   X = X \ 10
WEND
PRINT A
PRINT B
var x, a, b: integer;
begin
   readln(x);
   a:=0; b:=1;
   while x>0 do begin
      a:=a+1;
      b:=b*(x mod 10);
      x:= x div 10;
   end;
   writeln(a); write(b);
end.
Си Алгоритмический
#include<stdio.h>
void main() {
   int x, a, b;
   scanf("%d", &x);
   a=0; b=1;
   while (x>0){
      a=a+1;
      b=b*(x%10);
      x= x/10;
   }
   printf("%d\n%d", a, b);
}
алг
нач
   цел x, a, b
   ввод x
   a:=0; b:=1
   нц пока x>0
      a:=a+1
      b:=b*mod(x,10)
      x:=div(x,10)
   кц
   вывод a, нс, b
кон
 

Решение:  Разберемся, что означают переменные x, a, b. При инициализации xисходное натуральное число;  a=0, b=1. Посмотрим, что происходит при выполнении основного цикла

     нц пока x>0
         a:=a+1
         b:=b*mod(x,10)
         x:=div(x,10)
     кц

Значение a при каждом выполнении цикла увеличивается на 1, значит итоговое значение переменной a равно количеству выполнения цикла. От числа x при каждом выполнении цикла «отбрасывается» последняя цифра (операция x:=div(x,10) ). Таким образом, количество выполнений цикла (оно же – напечатанное значение переменной a) равно количеству цифр в исходном числе x. Значение переменой b умножается на выражение mod(x,10). Это - последняя цифра текущего значения x, т.е. очередная цифра исходного числа. Поэтому, итоговое значение переменной b равно произведению цифр исходного числа.

Пример выполнения цикла, если начальное значение x=423 приведен в таблице.
№ прохода Начальные значения Рабочие значения Конечные значения
x a b mod(x, 10) div(x, 10) x a b
1 423 0 1 3 42 42 1 3
2 42 1 3 2 4 4 2 6
3 4 2 6 4 0 0 3 24

 

Таким образом, в задаче требуется найти наибольшее трехзначное число, в котором произведение цифр равно 5. Это число – 511.

Ответ: 511

 

20.2  ( ege.yandex.ru – 2)  Ниже на 4-х языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b.  Укажите наименьшее из таких чисел x,  при вводе которых алгоритм печатает сначала 3, а потом 14.

Бейсик Паскаль
DIM X, A, B AS INTEGER
INPUT X
A=0: B=1
WHILE X > 0
   A = A+1
   B = B*(X MOD 10)
   X = X \ 10
WEND
PRINT A
PRINT B
var x, a, b: integer;
begin
   readln(x);
   a:=0; b:=1;
   while x>0 do begin
      a:=a+1;
      b:=b*(x mod 10);
      x:= x div 10;
   end;
   writeln(a); write(b);
end.
Си Алгоритмический
#include<stdio.h>
void main() {
   int x, a, b;
   scanf("%d", &x);
   a=0; b=1;
   while (x>0){
      a=a+1;
      b=b*(x%10);
      x= x/10;
   }
   printf("%d\n%d", a, b);
}
алг
нач
   цел x, a, b
   ввод x
   a:=0; b:=1
   нц пока x>0
      a:=a+1
      b:=b*mod(x,10)
      x:=div(x,10)
   кц
   вывод a, нс, b
кон
 

Решение:  Разберемся, что означают переменные x, a, b. При инициализации xисходное натуральное число;  a=0, b=1. Посмотрим, что происходит при выполнении основного цикла

     нц пока x>0
         a:=a+1
         b:=b*mod(x,10)
         x:=div(x,10)
     кц

Значение a при каждом выполнении цикла увеличивается на 1, значит итоговое значение переменной a равно количеству выполнения цикла. От числа x при каждом выполнении цикла «отбрасывается» последняя цифра (операция x:=div(x,10) ). Таким образом, количество выполнений цикла (оно же – напечатанное значение переменной a) равно количеству цифр в исходном числе x. Значение переменой b умножается на выражение mod(x,10). Это - последняя цифра текущего значения x, т.е. очередная цифра исходного числа. Поэтому, итоговое значение переменной b равно произведению цифр исходного числа.

Таким образом, в задаче требуется найти наименьшее трехзначное число, в котором произведение цифр равно 14. Число 14 можно только одним способом представить в виде произведения трех однозначных чисел (порядок чисел здесь не учитывается): 14 = 1 х 2 х 7. Наименьшее число, составленное из этих цифр - 127.

Ответ: 127

 

20.3  ( ege.yandex.ru – 3)  Ниже на 4-х языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b.  Укажите наибольшее из таких чисел x,  при вводе которых алгоритм печатает сначала 2, а потом 8.

Бейсик Паскаль
DIM X, A, B AS INTEGER
INPUT X
A=0: B=0
WHILE X > 0
   A = A+1
   B = B +(X MOD 10)
   X = X \ 10
WEND
PRINT A
PRINT B
var x, a, b: integer;
begin
   readln(x);
   a:=0; b:=0;
   while x>0 do begin
      a:=a+1;
      b:=b+(x mod 10);
      x:= x div 10;
   end;
   writeln(a); write(b);
end.
Си Алгоритмический
#include<stdio.h>
void main() {
   int x, a, b;
   scanf("%d", &x);
   a=0; b=0;
   while (x>0){
      a=a+1;
      b=b + (x%10);
      x= x/10;
   }
   printf("%d\n%d", a, b);
}
алг
нач
   цел x, a, b
   ввод x
   a:=0; b:=0
   нц пока x>0
      a:=a+1
      b:=b+mod(x,10)
      x:=div(x,10)
   кц
   вывод a, нс, b
кон
 

Решение:  Разберемся, что означают переменные x, a, b. При инициализации xисходное натуральное число;  a=0, b=0. Посмотрим, что происходит при выполнении основного цикла

     нц пока x>0
         a:=a+1
         b:=b+mod(x,10)
         x:=div(x,10)
     кц

Значение a при каждом выполнении цикла увеличивается на 1, значит итоговое значение переменной a равно количеству выполнения цикла. От числа x при каждом выполнении цикла «отбрасывается» последняя цифра (операция x:=div(x,10) ). Таким образом, количество выполнений цикла (оно же – напечатанное значение переменной a) равно количеству цифр в исходном числе x. К значению переменой b прибавляется значение выражения mod(x,10). Это - последняя цифра текущего значения x, т.е. очередная цифра исходного числа. Поэтому, итоговое значение переменной b равно сумме цифр исходного числа.

Таким образом, в задаче требуется найти наибольшее двузначное число, в котором сумма цифр равно 8. Это число – 80.

Ответ: 80

 

20.4  ( ege.yandex.ru – 4)  Ниже на 4-х языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b.  Укажите наименьшее из таких чисел x,  при вводе которых алгоритм печатает сначала 2, а потом 8.

Бейсик Паскаль
DIM X, A, B AS INTEGER
INPUT X
A=0: B=0
WHILE X > 0
   A = A+1
   B = B +(X MOD 10)
   X = X \ 10
WEND
PRINT A
PRINT B
var x, a, b: integer;
begin
   readln(x);
   a:=0; b:=0;
   while x>0 do begin
      a:=a+1;
      b:=b+(x mod 10);
      x:= x div 10;
   end;
   writeln(a); write(b);
end.
Си Алгоритмический
#include<stdio.h>
void main() {
   int x, a, b;
   scanf("%d", &x);
   a=0; b=0;
   while (x>0){
      a=a+1;
      b=b + (x%10);
      x= x/10;
   }
   printf("%d\n%d", a, b);
}
алг
нач
   цел x, a, b
   ввод x
   a:=0; b:=0
   нц пока x>0
      a:=a+1
      b:=b+mod(x,10)
      x:=div(x,10)
   кц
   вывод a, нс, b
кон
 

Решение:  Разберемся, что означают переменные x, a, b. При инициализации xисходное натуральное число;  a=0, b=0. Посмотрим, что происходит при выполнении основного цикла

     нц пока x>0
         a:=a+1
         b:=b+mod(x,10)
         x:=div(x,10)
     кц

Значение a при каждом выполнении цикла увеличивается на 1, значит итоговое значение переменной a равно количеству выполнения цикла. От числа x при каждом выполнении цикла «отбрасывается» последняя цифра (операция x:=div(x,10) ). Таким образом, количество выполнений цикла (оно же – напечатанное значение переменной a) равно количеству цифр в исходном числе x. К значению переменой b прибавляется значение выражения mod(x,10). Это - последняя цифра текущего значения x, т.е. очередная цифра исходного числа. Поэтому, итоговое значение переменной b равно сумме цифр исходного числа.

Таким образом, в задаче требуется найти наименьшее двузначное число, в котором сумма цифр равно 8. Это число – 17.

Ответ: 17

 

20.5  ( ege.yandex.ru – 5)  Ниже на 4-х языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b.   Сколько есть таких чисел x,  при вводе которых алгоритм печатает сначала 2, а потом 10?

Бейсик Паскаль
DIM X, A, B AS INTEGER
INPUT X
A=0: B=0
WHILE X > 0
   A = A+1
   B = B +(X MOD 10)
   X = X \ 10
WEND
PRINT A
PRINT B
var x, a, b: integer;
begin
   readln(x);
   a:=0; b:=0;
   while x>0 do begin
      a:=a+1;
      b:=b + x mod 10);
      x:= x div 10;
   end;
   writeln(a); write(b);
end.
Си Алгоритмический
#include<stdio.h>
void main() {
   int x, a, b;
   scanf("%d", &x);
   a=0; b=0;
   while (x>0){
      a=a+1; 
      b=b +(x%10);
      x= x/10;
   }
   printf("%d\n%d", a, b);
}
алг
нач
   цел x, a, b
   ввод x
   a:=0; b:=0
   нц пока x>0
      a:=a+1
      b:=b+mod(x,10)
      x:=div(x,10)
   кц
   вывод a, нс, b
кон
 

Решение:  Разберемся, что означают переменные x, a, b. При инициализации xисходное натуральное число;  a=0, b=0. Посмотрим, что происходит при выполнении основного цикла

     нц пока x>0
         a:=a+1
         b:=b+mod(x,10)
         x:=div(x,10)
     кц

Значение a при каждом выполнении цикла увеличивается на 1, значит итоговое значение переменной a равно количеству выполнения цикла. От числа x при каждом выполнении цикла «отбрасывается» последняя цифра (операция x:=div(x,10) ). Таким образом, количество выполнений цикла (оно же – напечатанное значение переменной a) равно количеству цифр в исходном числе x. К значению переменой b прибавляется значение выражения mod(x,10). Это - последняя цифра текущего значения x, т.е. очередная цифра исходного числа. Поэтому, итоговое значение переменной b равно сумме цифр исходного числа.

Таким образом, в задаче требуется найти количество двузначных чисел, у которых сумма цифр равно 10. Таких чисел есть девять: 19, 28, 37, 46, 55, 64, 73, 82, 91.

Ответ: 9

 
 

28 Комментов

  1. Анна:

    Почему в В7.2 ответ не 721?

  2. Диана:

    В B7.2 14 можно представить как 14*1*1, в таком случае ответ получается 124<127. Поправьте меня, если я не права.

    • editor:

      Поправляю :) 14 - это произведение ЦИФР исходного числа. Для числа 124 это произведение равно 1*2*4 = 8 (а не 14 :( ). А как из 14*1*1 получилось 124?

  3. Юлия:

    а мне ни чего не понятно =( а завтра экзамен =(

    • ege-go:

      1. Посмотри ответ Владимиру http://ege-go.ru/zadania/grb/b7/b7-answ/comment-page-1/#comment-421
      Попробуй почитать решение на сайте и сделать то, что говорится в комменте. Потом задавай вопросы поконкретнее.
      2. А сколько баллов ты собираешься получить? Может, ну ее, B7? :)

      • Юлия:

        баллов чем больше, тем лучше. может и ну ее эту в7, а может мозг сегодня уже не хочет работать а завтра может все впомню и решу

      • Юлия:

        как определять когда нужно трехзначное число? а когда двухзначное??

      • как определять когда нужно трехзначное число? а когда двухзначное??

        • ege-go:

          В задаче B7.1 значение переменной a после выполнения программы - это количество цифр в исходном числе x,
          смотри таблицу выполнения цикла в решении. В остальных задачах - аналогично.

  4. ира:

    не может быть? чтоб ответ получился 9,скорее 19!!!

    • ege-go:

      1. Пиши номер задачи! Я решил, что это про B7.5
      2. В задаче спрашивается "Сколько есть таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 10?"
      А ты отвечвешь на вопрос - какое из них наименьшее.
      Будь внимательнее! Если устала - лучше отдохни :)

      • ира:

        я все равно не могу с вами согласиться,во-первых, это должно быть двухзначное число,а во-вторых,выражение 9+0 никогда не будет равным 10!!!может еще раз проверите 5 вариант задание В7, заранее спасибо!!!=)

        • ege-go:

          Поздно, пора спать! :) Вот, что написано на сайте:
          "В задаче требуется найти количество двузначных чисел, у которых сумма цифр равно 10. Таких чисел есть девять: 19, 28, 37, 46, 55, 64, 73, 82, 91. Ответ: 9" И это правда! :)
          БОНУС: повторяю коммент от DM:
          ДМ 27.05.2012 в 7:27 пп
          «b:=b + x mod 10);» — стоит «+» — находим сумму.
          «b:=b * x mod 10);» — стоит «*» — ищем произведение. Почему это нельзя было сказать сразу — хз

  5. Анечка:

    a:=a+1
    b:=b+mod(x,10)
    когда такое в программе то складываем числа? получается выводится число по сумме

  6. Леша:

    Скажите плиз а как понять где произведение? Где сумма?

  7. Владимир:

    не могу разобраться, когда надо произведение цифр, а когда их сумма? типа если трехзначное число то нужно находить произведение цифр, а если двухзначное, то сумму цифр? или я дурак?=D

    • ege-go:

      Начну с последнего вопроса. Ты не дурак, потому, что догадался нам написать :)
      По первому вопросу. Конечно, дело не в том, сколько цифр. Что именно вычисляется, определяется тем,
      как в цикле меняется переменная b. Посмотри еще раз решение задачи, попробуй вручную или пошагово на компьютере прокрутить программы.
      Я вставил на сайте пример такой прокрутки для B7.1 Не разберешься - напиши снова.

      • Натали:

        видимо я тормоз !

        я не могу понять когда складывать , а когда умножать ?!

        • ege-go:

          Каждый по-своему тормоз :)
          Посмотри ответ Владимиру http://ege-go.ru/zadania/grb/b7/b7-answ/comment-page-1/#comment-421
          Лучше я на такой общий вопрос не отвечу. Если не разберешься, попробуй задать вопрос поконкретнее.
          Успехов!

          • ДМ:

            "b:=b + x mod 10);" - стоит "+" - находим сумму.
            "b:=b * x mod 10);" - стоит "*" - ищем произведение. Почему это нельзя было сказать сразу - хз

  8. Aldyn-ai:

    Спасиибо...быстро и понятно!

  9. Александр:

    Здорово! Очень помогло разобраться:)

 
 

Что думаете?

 




 
 

 
 
Яндекс.Метрика