Чт, 17.08.2017, 11:02
Форум інформатиків України
Головна Реєстрація Вхід
Вітаю Вас, Гість · RSS
Вітання на форумі
Незнайомець
Вітаємо на форумі,
Незнайомцю!

   
зареєструйтесь
Перед реєстрацією обов’язково прочитайте:
Оновлення Учасники Пошук
Особисті повідомлення
Видавництво ’’Аспект’’ Видавництво

Сторінка 21 з 21«12192021
Модератор форуму: Ktara, Bandalak, НІКОЛЯ, volevikt 
Форум інформатиків » РОЗДІЛ I: ІНФОРМАТИКА, ПРОБЛЕМИ, ОБГОВОРЕННЯ, ВИРІШЕННЯ » 1.11 Змагання, конкурси, олімпіади » Олімпіадні задачі. (розв’язування олімпіадних задач.)
Олімпіадні задачі.
Ковальчук_Олександр Дата: Вт, 20.11.2007, 21:07 | Повідомлення № 1
Ветеран спілкування
Повідомлень: 3616
Нагороди: 17
Рейтинг: 192
Шановні учасники форуму! Скоро районна олімпіада по інформатиці. Допоможіть мені та іншим вчителям інформатикам, які погано розуміються на задачах олімпіадного рівня, підвищити свої знання в області програмування.

Увага! При публікуванні розв’язку обов’язково, окрім самої паскаль-програми писати математичну модель задачі і роз’яснювати ваш розв’язок максимально зрозуміло. Бо із самого тексту програм, не завжди все зрозуміло для пересічного інформатика. 


[admin]Шановні форумчани!!!!!
Повідомлення, які не відповідають темі або несуть некорисний зміст будуть видалятись без попередження!!!


Відредаговано: W-w-W - Пт, 08.01.2016, 00:28
Пилипчук_О_П Дата: Пн, 17.04.2017, 10:49 | Повідомлення № 301
Ветеран спілкування
Повідомлень: 3664
Нагороди: 27
Рейтинг: 294
Цитата LVV ()
2) количество возможных обменов дешевых цветов на дорогие может оказаться больше, чем , чем дешевых цветков в букете

Точно.
Цитата LVV ()
3) "День учителя" не траурный праздник, а значит цветов в букете должно быть четное количество.

А це вже інша задача.
fox11 Дата: Пн, 17.04.2017, 19:07 | Повідомлення № 302
Тут живе...
Повідомлень: 161
Нагороди: 2
Рейтинг: 20
К моему стыду не зал, min работает без <algorithm>
Может еще есть, что интересное в <iostream>?

А задачу этим способом не додавил...
Пришлось идти другим путем:
#include <iostream>
using namespace std;
int main()
{
int a, b, c, m, t, k;
cin>>a>>b>>c;
k=c/a;
m=k*a;
t=m;
while(k>0 && t>=a && (t-a+b)<=c)
{
t=t-a+b;
k--;
if(t>m) m=t;
}
cout<<m;
return 0;
}
Но ваш способ мне нравится больше, класс!


Відредаговано: fox11 - Пн, 17.04.2017, 19:13
Пилипчук_О_П Дата: Пн, 17.04.2017, 21:46 | Повідомлення № 303
Ветеран спілкування
Повідомлень: 3664
Нагороди: 27
Рейтинг: 294
Цитата fox11 ()
Но ваш способ мне нравится больше, класс!

Звичайно, якщо можна обійтись без циклу - варто це робити. Мучить думка, що можна обійтись навіть без перевірки умови. Але це вже буде, звичайно, "фігурне катання". :)
swetikccc Дата: Вт, 18.04.2017, 08:54 | Повідомлення № 304
Ветеран спілкування
Повідомлень: 3770
Нагороди: 23
Рейтинг: 336
Цитата Пилипчук_О_П ()
вичайно, якщо можна обійтись без циклу - варто це робити. Мучить думка, що можна обійтись навіть без перевірки умови. Але це вже буде, звичайно, "фігурне катання".
Якщо просто залишити гілочку else то повинно працювати, адже множення на 0 дає 0.

Перевірив. Зараховано.
#include <iostream>
usingnamespace std;
int main()
{
int a,b,c,n,res;
cin >> a >> b >> c;
n=c/a;
res = n*a + min(n,c%a / (b-a)) * (b-a);
cout << res ;
return0;
}

В кого там слідуюча задача?
Так цікаво навіть вчитися


Відредаговано: swetikccc - Вт, 18.04.2017, 15:26
fox11 Дата: Вт, 18.04.2017, 17:03 | Повідомлення № 305
Тут живе...
Повідомлень: 161
Нагороди: 2
Рейтинг: 20
1.     Ліцензійне ПЗ
Як ви знаєте, для підтвердження ліцензійності ПЗ
використовуються серійні номери та регістраційні ключі. Вами, як провідними
розробниками систем верифікації ліцензійності ПЗ, була розроблена ідея
найнадійнішої у своєму роді системи. Базується вона на цифрових коренях чисел.
Тепер вам потрібно написати програму, яка визначає цифровий корінь даного
числа.
Для довільного числа цифровий корінь визначається
наступним чином:
1.    Якщо сума цифр числа меншедесяти, то цифровий корінь і є сума цифр цього числа.
2.    У протилежному випадку цифровийкорінь числа дорівнює цифровому кореню суми його цифр.
Вхідні дані
Єдине число n (0n231-1).
Вихідні дані
Вивести одне число - відповідь на поставлену
задачу.
·     Ліміт часу 1 секунда
·     Ліміт використання пам'яті 64MiB
Вхідні дані #1          123                              Вихідні дані #1              6

 Только надо красиво.


Відредаговано: fox11 - Вт, 18.04.2017, 17:05
swetikccc Дата: Вт, 18.04.2017, 19:03 | Повідомлення № 306
Ветеран спілкування
Повідомлень: 3770
Нагороди: 23
Рейтинг: 336
Цитата fox11 ()
Только надо красиво
Тільки стандартне з циклом do і умовою що цілочисленне ділення на 10 не дорівнює 0 .
Ну а далі красиво вивести тернарним оператором. ;)
Пилипчук_О_П Дата: Ср, 19.04.2017, 11:02 | Повідомлення № 307
Ветеран спілкування
Повідомлень: 3664
Нагороди: 27
Рейтинг: 294
Перше, що прийшло до голови:

Код
program korin;
var a:integer;

function suma (c:integer):integer;
var k:integer;
begin
  k:=0;
  repeat
    k:=k+c mod 10;
    c:=c div 10;
  until c=0;
  suma := k
end;

begin
  readln (a);
  while a>9 do
    a:=suma(a);
  writeln (a)  
end.


Цитата fox11 ()
Только надо красиво.

Тут без уточнення критеріїв складно зорієнтуватись. Мені подобається :)
fox11 Дата: Ср, 19.04.2017, 21:00 | Повідомлення № 308
Тут живе...
Повідомлень: 161
Нагороди: 2
Рейтинг: 20
Дотянул пока до этого

#include <iostream>
using namespace std;
int main()
{
int k, s;
cin>>k;
while (k>9)
{
    s=k;k=0;
    while(s>0)
    {
        k=k+s%10;
        s=s/10;
    }
}
cout<<k;
return 0;
}


Відредаговано: fox11 - Ср, 19.04.2017, 21:01
Пилипчук_О_П Дата: Чт, 20.04.2017, 00:07 | Повідомлення № 309
Ветеран спілкування
Повідомлень: 3664
Нагороди: 27
Рейтинг: 294
Цитата fox11 ()
Дотянул пока до этого

Алгоритм практично той самий. Навіть не знаю, що додати, щоб було красиво...
Я про всяк випадок виніс підрахунок суми цифр у функцію - читабельність зросла.
Форум інформатиків » РОЗДІЛ I: ІНФОРМАТИКА, ПРОБЛЕМИ, ОБГОВОРЕННЯ, ВИРІШЕННЯ » 1.11 Змагання, конкурси, олімпіади » Олімпіадні задачі. (розв’язування олімпіадних задач.)
Сторінка 21 з 21«12192021
Пошук:


© Форум інформатиків України, 2007-2017.