 |
Вітаю Вас, Гість · RSS |
 |
Задачі шкільного рівня.
| |
kom_adm |
Дата: Tu, 11.03.2008, 02:09 | Повідомлення № 1 |
Ветеран спілкування
Повідомлень: 3767
| У гостьовій книзі користувач роман попросив розв’язати кілька простих задач для свого сина. Я вирішив допомогти йому і заодно створити тему, де хтось буде писати умову цікавої задачі шкільного рівня, а інші будуть пропонувати розв’язки цієї задачі. І ми разом серед кількох варіантів розв’язку вибиратимемо найоптимальніший, методично правильний. Тема досить актуальна і цікава. Сподіваюсь, допоможе вчителям, які з різних причин погано знаються на задачах з програмування навіть шкільного рівня (наприклад вчитель, який інформатику читає не за спеціальністю). Отож, задачі з гостьової книги: Задача 1. Дано натуральне число N (1000 < =N<=9999). Визначити, чи є числo поліндромом, тобто таким числом, яке зліва направо і справа наліво читається однаково (всі чотири цифри враховуються; наприклад, 0110). Задача 2. Василина Премудра грала в шашки зі змієм Гориничем на дуже великій дошці. Спочатку Василина з’їла у Горинича 3 шашки, а Горинич у Василини – 5 шашок, потім Василина у Горинича з’їла 9 шашок, а Горинич у Василини – 10 шашок, на третьому ході Василина проковтнула 15 шашок, а Горинич- 20. Ця серйозна гра тривала ще довго, аж поки Горинич не втомився і після N-го ходу не з’їв саму Василину. Скільки всього шашок проковтнув Змій Горинич? Кількість шашок завжди достатня. Задача 3 . Знайти всі дільники натурального числа N. Розв’язки: Задача 1. var n,n1,n2,n3,n4,r:integer; begin write('Введіть будь-яке чотирьохзначне число: '); readln(n); n1:=n div 1000; n2:=(n div 100) mod 10; n3:=(n div 10) mod 10; n4:= n mod 10; r:=n4*1000+n3*100+n2*10+n1; if r=n then writeln ('Введене число ',n,' являється поліндромом.') else writeln ('Введене число ',n,' не є поліндромом.') end. Задача 3. var i,n:integer; begin writeln('Введіть натуральне число'); readln(n); writeln('Дільники числа ',n,': '); for i:=1 to n do if n mod i = 0 then write(i,' '); end. Розв’язок задачі 2 напишу незабаром. А зараз хотілося б почути ваші думки з приводу того, чи оптимально розв’язані задачі 1 та задачі 3. Звичайно, задача 1 не враховує захист від введення не чотиризначного числа, та це легко можна виправити розгалуженням. Шановні форумчани!!!!! Повідомлення, які не відповідають темі або несуть некорисний зміст будуть видалятись без попередження!!!
|
|
| |
oleg_teacher |
Дата: Tu, 11.03.2008, 08:14 | Повідомлення № 2 |
Любитель дискутувати
Повідомлень: 177
| Quote (Ковальчук_Олександр) (всі чотири цифри враховуються; наприклад, 0110). Так число выд 1000 ... (0110 не входить!!!)Додано (11.03.2008, 08:14) ---------------------------------------------
Quote (oleg_teacher) r:=n4*1000+n3*100+n2*10+n1; if r=n then writeln ('Введене число ',n,' являється поліндромом.') else writeln ('Введене число ',n,' не є поліндромом.') Може так простіше if (n1=n4)and(n2=n3) then writeln ('Введене число ',n,' являється поліндромом.') else writeln ('Введене число ',n,' не є поліндромом.')
|
|
| |
Varkan |
Дата: Tu, 11.03.2008, 09:01 | Повідомлення № 3 |
Викладач ВУЗу
Повідомлень: 425
| Quote (Ковальчук_Олександр) Я вирішив допомогти йому і заодно створити тему, де хтось буде писати умову цікавої задачі шкільного рівня, а інші будуть пропонувати розв’язки цієї задачі. це теми подібнв до тем: поцедурне програмування та вчительська олімпіада. на мою думку потрібно не створювати нові теми а реанімувати старі.
|
|
| |
Varkan |
Дата: Tu, 11.03.2008, 09:47 | Повідомлення № 4 |
Викладач ВУЗу
Повідомлень: 425
| 1 задача. На мою думку простіше було б перевести число в рядок і порівняти його половинки. 2 задача. без врахування шашок які зїла Василина: k:=5; m:=2; for i:=2 to n do begin k:=k+5*m m:=m+2; end; з врахуванням шашок які зїла Василина: k1:=3 k2:=5; m1:=3 m2:=2; for i:=2 to n do begin k1:=k1+3*m1 m1:=m1+2; k2:=k2+5*m2 m2:=m2+2; end; k:=k1+k2; 3 задача. Нормально, в мнене зауважень немає.
|
|
| |
oleg_teacher |
Дата: Tu, 11.03.2008, 10:10 | Повідомлення № 5 |
Любитель дискутувати
Повідомлень: 177
| Quote (Varkan) 3 задача. Нормально, в мнене зауважень немає. В мене є: Quote (Ковальчук_Олександр) for i:=1 to n do if n mod i = 0 then Забагато проходжень циклу. Треба згадувати теорію (сам не памятаю). Здається Найбільшим дільником числа є число що не перевищує корінь квадратний з цього числа (чи половинного числа).
|
|
| |
Varkan |
Дата: Tu, 11.03.2008, 11:12 | Повідомлення № 6 |
Викладач ВУЗу
Повідомлень: 425
| Quote (oleg_teacher) Здається Найбільшим дільником числа є число що не перевищує корінь квадратний з цього числа приклад 99 корінь(99)=9,... дальник 33
|
|
| |
Bandalak |
Дата: Tu, 11.03.2008, 11:35 | Повідомлення № 7 |
Лідер форуму
Повідомлень: 6386
| Quote (Varkan) Здається Найбільшим дільником числа є число що не перевищує корінь квадратний з цього числа [color=red]Невеличке уточнення: Тут має бути так: НД <= a/2
Відредаговано: Bandalak - Tu, 11.03.2008, 13:44 |
|
| |
Varkan |
Дата: Tu, 11.03.2008, 12:10 | Повідомлення № 8 |
Викладач ВУЗу
Повідомлень: 425
| Quote (Bandalak) Невеличке уточнення: Найбільшим дільником числа є число що не перевищує корінь квадратний з цього числа + 1. який найбільший дільник числа 99? це 33 по моєму. тут з коренем ніяк не вяжеться.
|
|
| |
Bandalak |
Дата: Tu, 11.03.2008, 13:44 | Повідомлення № 9 |
Лідер форуму
Повідомлень: 6386
| Quote (Varkan) тут з коренем ніяк не вяжеться Так, не в'яжеться. Наприклад. Для 9 НД = 3, 3<=sqrt(9). Для 99 НД=33, 33>sqrt(99) Вибачте, я помиливля! Зпутав, з формулою для уявного радыусу розподылу ймовырностей. А тут маэ бути так: НД <= a/2
|
|
| |
Varkan |
Дата: Tu, 11.03.2008, 14:31 | Повідомлення № 10 |
Викладач ВУЗу
Повідомлень: 425
| Quote (Bandalak) А тут маэ бути так: НД <= a/2 узагальнюю. Найбільший дільник = число/найменший дільник оскільки у всіх чисел найменший дільник це 1 то і відповідно найбільший дільник це саме число. виникає питання який найбільший дільник після самого себе. відповідь беремо число і ділимо його на дільник який іде після 1. отже для 99 найменший дільник - 1 найбільший дільник - 99 (тут не посперечаєшся) якщо не враховувати 1 і 99 то найменший дільник - 3 найбільший дільник - 99/3=33 Додано (11.03.2008, 14:31) --------------------------------------------- кусочок коду. j:=2 while n mod j <> 0 then j:=i+1; k:=2 for i:=j to n/j do if n mod i = 0 then k:=k+1;
|
|
| |
роман |
Дата: Tu, 11.03.2008, 15:54 | Повідомлення № 11 |
Новий користувач
Повідомлень: 4
| Дякую всім за допомогу!  Додано (11.03.2008, 15:54) --------------------------------------------- Але може ще хтось напише розвязок 2 задачі. Йому потрібно на завтра! 
|
|
| |
oleg_teacher |
Дата: Tu, 11.03.2008, 16:59 | Повідомлення № 12 |
Любитель дискутувати
Повідомлень: 177
| Quote (oleg_teacher) Треба згадувати теорію (сам не памятаю). я ж казав не памятаю точно, але по суті див далі ...Quote (oleg_teacher) чи половинного числа). Хоча дякую Варкану за більше уточнення: Quote (Varkan) відповідь беремо число і ділимо його на дільник який іде після 1. ЛОГІЧНО!!!! Додано (11.03.2008, 16:59) --------------------------------------------- Quote (Varkan) for i:=j to n/j do а тут паскаль вроді дасть помилку див. n/j. Гадаю слідуючи далі по теорії має бути так: var m,n,j:integer; ... m:=n div j; for i:=j+1 to m do
Відредаговано: oleg_teacher - We, 12.03.2008, 08:02 |
|
| |
роман |
Дата: Tu, 11.03.2008, 18:45 | Повідомлення № 13 |
Новий користувач
Повідомлень: 4
| будь ласка напишыть ще друге задачу! Дякую наперед
|
|
| |
Sasyk |
Дата: Tu, 11.03.2008, 19:07 | Повідомлення № 14 |
знаток тестуючих систем
Повідомлень: 300
| роман, цікаво, а куди такі задачі потрібні вашому сину?
|
|
| |
роман |
Дата: Tu, 11.03.2008, 19:22 | Повідомлення № 15 |
Новий користувач
Повідомлень: 4
| А як щодо такої задачі? 4. 3. Обчислити описану нижче функцію на проміжку (-2;2) з інтервалом 0,5. Y { Xквадрат x<1 x-2 x=1 x+4 , якщо 1<x<3Додано (11.03.2008, 19:22) --------------------------------------------- вони йому потрібні для наукової роботи, як приклади
|
|
| |
© Форум інформатиків України, 2007-2022.  |