Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 08.10.2012
Сообщений: 50
1

Нужно объяснить код оллимпиадной задачи

03.06.2013, 13:01. Показов 1177. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть олимпиадная задача:
Группа программистов собралась в понедельник и на все свои деньги купила «Sprite» в бутылках емкостью по 0.25 л., не забыв взять сдачу.
Во вторник они сдали пустую посуду, добавили оставшуюся сдачу и вновь купили столько таких же бутылок «Sprite», сколько могли.
Так они действовали до пятницы. В пятницу, сдав посуду и добавив сдачу с четверга, они смогли купить только одну бутылку напитка. При этом денег у них уже не осталось.
Определить минимальную сумму, которой располагали программисты в понедельник

Вот код к ней:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package javaapplication4;
 
import java.util.Scanner;
 
public class JavaApplication4 
{ 
    public static void main(String[] args) 
    {
        int n, k, b1, b2, b3, b4, kol = 400,min,tmp;
 
        Scanner sc = new Scanner(System.in); 
        System.out.println("Вход:");
        
        System.out.print("n=");
        n = sc.nextInt(); 
        
        System.out.print("k=");
        k = sc.nextInt(); 
        
        min = func(kol,kol,kol,kol,k,n);
        for(b4 = 1; b4 < kol;b4++)
        {
            for(b3 = 1; b3 < kol; b3++)
            {
                for(b2 = 1; b2 < kol; b2++)
                {
                    for(b1 = 1; b1 < kol; b1++)
                    {                                 
                         if(proverka(b1,b2,b3,b4,k,n))
                         {                                                  
                               System.out.println("Вывод: " + func(b1,b2,b3,b4,k,n));                                                   
                               return;
                         }   
                    }    
                }    
            }
        }    
    }
    
    public static int func(int b1,int b2,int b3,int b4,int k,int n)
    {
        return (b1 + b2 + b3 + b4)*(n - k) + n; 
    } 
    
 
 
    public static boolean proverka(int b1,int b2,int b3,int b4,int k,int n)
    {
        boolean res = false;
        if(
                (b1 > b2) && 
                (b2 > b3) && 
                (b3 > b4) && 
                (b4 >0) &&  
                ((n - b4*k) > 0)&& 
                (((b4 + 1)*n - (b3 + b4)*k) > 0)&& 
                (((b3 + b4 + 1)*n - (b2 + b3 + b4)*k) > 0)&&
                (((b2 + b3 + b4 +1)*n - (b1+ b2 + b3 + b4)*k) > 0)&& 
                ((n - b4*k) < n)&& 
                (((b4 + 1)*n - (b3 + b4)*k) < n)&& 
                (((b3 + b4 + 1)*n - (b2 + b3 + b4)*k) < n)&&
                (((b2 + b3 + b4 + 1)*n - (b1+ b2 + b3 + b4)*k) < n)               
          )
        {
            res = true;
        }
        return res;
    }
}
Объясните плз принцип работы. Желательно закомментировать. И если не трудно проверьте программу. Считает вроде правильно, но с чем черт не шутит?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.06.2013, 13:01
Ответы с готовыми решениями:

Объяснить решение задачи (добавить комментарии в код)
На паре нам дали задание - закомментировать всю свою задачу. Я ученица первого курса, и задачу мне...

Нужно объяснить, по какому принципу работает код
вот код: #include &quot;stdio.h&quot; #include &quot;math.h&quot; #include &quot;conio.h&quot; const int MAX_SIZE = 1000; ...

Объяснить код игры на Делфи 7 (Нужно для защиты)
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...

Class для работы с дробными числами. Объяснить ( код писать не нужно )
Class для работы с дробными числами. Число должно быть представлено двумя полями: целая часть -...

4
154 / 154 / 10
Регистрация: 16.10.2012
Сообщений: 354
Записей в блоге: 1
03.06.2013, 14:24 2
Что значит "минимальную сумму"?
Стоимость бутыки и выручка от сдачи вводятся с клавиатуры?
0
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
03.06.2013, 14:30 3
Цитата Сообщение от Gibby Посмотреть сообщение
Что значит "минимальную сумму"?
Стоимость бутыки и выручка от сдачи вводятся с клавиатуры?
наверное нужно посчитать деньги в бутылках
0
0 / 0 / 0
Регистрация: 08.10.2012
Сообщений: 50
03.06.2013, 14:34  [ТС] 4
Цитата Сообщение от Gibby Посмотреть сообщение
Что значит "минимальную сумму"?
Стоимость бутыки и выручка от сдачи вводятся с клавиатуры?
Да, цена пустой и цена полной.
0
154 / 154 / 10
Регистрация: 16.10.2012
Сообщений: 354
Записей в блоге: 1
03.06.2013, 17:40 5
Пусть
p — цена бутылки спрайта;
r — выручка от возврата бутылки;
v0 — первоначальная сумма денег
vi — сумма на конец i-го дня

Тогда vi = r * (vi–1 \ p) + vi–1 % p

Требуется, чтобы v4 – p = 0

Пишем функцию v4(v0) и методом хорд находим решение.

Разве не так?

Вот только насчет минимальности я не уверен — функция нелинейная, следовательно решений может быть много.
0
03.06.2013, 17:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.06.2013, 17:40
Помогаю со студенческими работами здесь

Нужно дописать код задачи
смотрите суть в том что нада вписывать текст (количество букв в слове должно быть меньше 15) далее...

Нужно составить код задачи JAVA
Разработайте класс для подсчета количества медалей разных стран на олимпийский играх...

Нужно составить код простой задачи
Здравствуйте.Нужна хелпа. например есть число 5,это число появиятся в поле на граф интерфейсе...

Нужно создать код задачи используя консоль
Дано целое число N (&gt;0). Найти сумму n² + (n+1)² + ((n+2)² + … +(2*n)²...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru