Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java
Войти
Регистрация
Восстановить пароль
 
Ashlott
0 / 0 / 2
Регистрация: 08.10.2012
Сообщений: 50
#1

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

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

Есть олимпиадная задача:
Группа программистов собралась в понедельник и на все свои деньги купила «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;
    }
}
Объясните плз принцип работы. Желательно закомментировать. И если не трудно проверьте программу. Считает вроде правильно, но с чем черт не шутит?
http://www.cyberforum.ru/java-j2se/thread1941103.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2013, 13:01
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Нужно объяснить код оллимпиадной задачи (Java):

Объяснить код
Всем привет, может кто ни будь разъяснить мне этот код пожалуйста. А то я либо...

Объяснить код
Всем добрый день. Есть код public class Dog { String name; public...

Объяснить код в массивах
Всем доброго дня, дана задача: 1. Создать массив на 10 строчек. 2. Ввести с...

Объяснить код метод getBytes()
Задание было Прочесть с консоли имя файла. и Считывать строки с консоли, пока...

Восходящее преобразование, объяснить код
Всем привет! Мне не понятен один момент в восходящем преобразовании. Есть...

4
Gibby
152 / 152 / 10
Регистрация: 16.10.2012
Сообщений: 354
Записей в блоге: 1
03.06.2013, 14:24 #2
Что значит "минимальную сумму"?
Стоимость бутыки и выручка от сдачи вводятся с клавиатуры?
0
animator404
97 / 97 / 12
Регистрация: 05.05.2013
Сообщений: 1,206
03.06.2013, 14:30 #3
Цитата Сообщение от Gibby Посмотреть сообщение
Что значит "минимальную сумму"?
Стоимость бутыки и выручка от сдачи вводятся с клавиатуры?
наверное нужно посчитать деньги в бутылках
0
Ashlott
0 / 0 / 2
Регистрация: 08.10.2012
Сообщений: 50
03.06.2013, 14:34  [ТС] #4
Цитата Сообщение от Gibby Посмотреть сообщение
Что значит "минимальную сумму"?
Стоимость бутыки и выручка от сдачи вводятся с клавиатуры?
Да, цена пустой и цена полной.
0
Gibby
152 / 152 / 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2013, 17:40
Привет! Вот еще темы с решениями:

Потоки. Объяснить как работает код
Вот у меня есть код программы, которая создает два процесса. Первый генерирует...

Не понимаю как сделать. Очень нужно. прошу объяснить
очень желательно примеры

Объясните пожалуйста как работает этот код, как это объяснить преподавателю, кто шарит
Тут вначале понятно, тип матрица 5 на 5, дальше что за переменные? и что за...

Нужно решение задачи
Задача: В городе N есть большой склад на котором существует 50000 различных...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru