Номер цифри

Дано натуральне число. З нього викреслюють одну цифру. Яку саме цифру потрібно викреслити з цього числа, щоб після цього отримати максимально можливе число?

Формат вхідних даних: у єдиному рядку записано єдине ціле число N(11 ≤N< 1 000 000 000).

Формат вихідних даних: номер ви­кресленої цифри, за умови, що цифра в найстаршому розряді має номер 1.

Continue reading

Заяць на східцях

Вгорі на східцях, що мають N сходинок, знаходиться заєць, який почи­нає стрибати по них униз. Заєць може стрибнути на наступну сходинку, через одну або через дві. Тобто, якщо заєць знаходиться на 10-й сходинці, то він може переміститися на 9-ту, 8-му або 7-му Обчислити кількість усіх можливих «маршрутів» зайця з вершини до землі.

Формат вхідних даних: одне число 0 <М< 37.

Формат вихідних даних: одне число — кількість усіх можливих маршрутів.

Ідея розв’язання. Задачу розв’яжемо аналогічно до задачі про числа Фібоначчі. Нехай заєць знаходиться на сходинці з номером X. Тоді він може стрибнути на сходинки X- 1, X- 2 і X- 3.

TextWindow.Title="Заяць на східцях"
TextWindow.WriteLine("Введіть значення N")
N=TextWindow.ReadNumber()
x=1
y=2
z=4
If (n=1) then
  TextWindow.WriteLine(x)
ElseIf (n=2) Then
  TextWindow.WriteLine(y)
elseif (n=3) then
     TextWindow.WriteLine(z)
   Else
      For i=4 To N
        z= x+y+z
        y=z-x-y
        x=z-x-y
      EndFor
        TextWindow.WriteLine(z)  
EndIf

Числа Фібоначчі

Обчислити N-е число послідовності Фібоначчі — 1, 1, 2, 3, 5, 8,…, — в якій перші два члени дорівнюють 1, а всі інші — це сума двох попе­редніх.

Формат вхідних даних: одне число 0 < N< 47.

Формат вихідних даних: одне число —N-й член послідовності.

Доцільно розглянути найпростіший спосіб — не рекурсивний . Для цього будемо виконувати обчислення не від того, що потрібно знайти до тривіального (рекурсія), а навпаки.

Як правило, такий спосіб розв’язання програма виконує у кілька разів швидше. Ідея алго­ритму — обчислення і збереження тільки двох елементів послідовності:

y=x+y

x=y-x

TextWindow.Title="Числа Фібоначчі"
TextWindow.WriteLine("Введіть число N")
N=TextWindow.ReadNumber()
x=1
y=1
For i=3 To N
  y=x+y
  x=y-x
  EndFor 
  TextWindow.WriteLine(y)

Друк рядка

Сергій дуже любить грати в таку гру: довільним чином вибирають два натуральних числа N (1 <И < 100) і М (1 <М<100). Створюється рядок символів, у який підряд виписуються числа: спочатку одна 1, потім дві 2, потім три 3 і так далі до N. Наприклад, для N = 5 отриманий рядок такий: 122333444455555. Потім отриманий рядок записується в кілька рядків по М символів у рядку. Останній рядок може бути неповної дов­жини. Наприклад, попередній рядок для М= 3 буде записаний у вигляді:

122

333

444

455

555

Потрібно написати програму, що звільнить Сергія від цієї марної витрати часу.

Формат вхідних даних: два числа N і М, що не перевищують 100.

Формат вихідних даних: у кожному рядку повинно міститися по М символів з отриманого для N рядка. Останній рядок може бути неповним.

Ідея розв’язання. Формування на початку всього рядка є недоцільним. Такий рядок можна сформувати тільки для N= 16 (227 символів). Тому будемо формувати рядок, доки його довжина не стане > М, потім будемо виводити підрядок довжини М та відразу його вилучати. Після цього зно­ву будемо будувати рядок з подальшим виведенням і вилученням. Для випадку, коли останній рядок буде неповним, передбачимо його виведен­ня після закінчення циклу.

TextWindow.Title="Друк рядка"
TextWindow.WriteLine("Введіть значення N")
N=TextWindow.ReadNumber()
TextWindow.WriteLine("Введіть значення M")
M=TextWindow.ReadNumber()
s=""
For i=1 To N
  For j=1 To i
    s=Text.Append(s, i)
    While Text.GetLength (s) >= M
      TextWindow.WriteLine(Text.GetSubText(s,1,M))
      s=text.GetSubTextToEnd(s,M+1)
    EndWhile
  EndFor
EndFor
If Text.GetLength (s) > 0 Then
  TextWindow.WriteLine(s)
EndIf

Факторіал

N! — добуток натуральних чисел від 1 до N. Напишіть програму знаходження правої ненульової цифри в запису числа N!. Наприклад, 5! = 120 — правою ненульовою цифрою буде 2, для 71 — 4.

Формат вхідних даних: у єдиному рядку знаходиться число N(1≤N≤1000).

Формат вихідних даних: у єдиний рядок виведіть праву ненульову цифру в N!.

Ідея розв’язання. Очевидним способом є обчислення факторіала чис­ла N та знаходження відмінної від нуля правої цифри із застосування дов­гої арифметики.

Розглянемо більш раціональний спосіб. Очевидно, що:

• нулі в кінці числа N! суттєвої ролі не відіграють, тому відкидатимемо їх у міру появи;

• зберігати повністю число N! також немає сенсу, достатньо зберігати 5—8 останніх цифр без «правих» нулів.

TextWindow.Title="Факторіал"
TextWindow.WriteLine("Введіть значення N")
N=TextWindow.ReadNumber()
x=1
For i=1 To N
  x=x*i
  While math.Remainder(x,10)=0
      x=x/10
    EndWhile
      If x>100000 Then
      x=Math.Remainder(x,100000)
    EndIf
  EndFor 
  TextWindow.WriteLine(Math.Remainder(x,10))

Задача 0122

Побудувати і замалювати прямокутник зі сторонами 30 і 50 пікселів, центр якого співпадає з центром монітора. Сторони прямокутника мають бути паралельні осям координат монітора.

x=GraphicsWindow.Width /2
y=GraphicsWindow.Height /2
GraphicsWindow.FillRectangle(x-25,y-25,50,30)

Задача 0121

Побудувати і замалювати квадрат зі стороною 30 пікселів, центр якого співпадає з центром монітора. Сторони квадрата мають бути паралельні осям координат монітора.

x=GraphicsWindow.Width /2
y=GraphicsWindow.Height /2
GraphicsWindow.FillRectangle(x-15,y-15,30,30)