Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 21.08.2017
Сообщений: 5

Направьте в нужно направлении

21.08.2017, 14:36. Показов 1517. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Запишите дату своего рождения в формате DDMMYY, возьмите остаток от деления на 7.
К полученному значению прибавьте 7. Обозначим полученное число Х.
Правила деления пиццы:
1.Пиццу можно не делить, получая целую пиццу.
2.Пиццу можно поделить пополам, получая 2 кусочка по ½ кусочка пиццы каждый.
3.Пиццу можно поделить на четыре части, получая 4 кусочка по ¼ кусочка пиццы каждый
.
4.Пиццу можно поделить на восемь частей, получая 8 кусочков по 1/8 кусочка пиццы
каждый .
Задача:
Сколько существует уникальных вариантов получить Х / 8 пиццы имея в распоряжении
кусочки, которые можно получить четырьмя выше описанными правилами?
Какие они?
Напишите программу на любом языке, которая отвечает на поставленные вопросы в
зависимости от даты рождения.
Программа должна считывать дату рождения в формате DDMMYY со стандартного
ввода.
Программа должна выводить множество ответов на стандартный вывод.
Пример:
myprogram.exe 19071990
[1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8]
[1/4, 1/8, 1/8, 1/8, 1/8, 1/8]
[1/4, 1/4, 1/8, 1/8, 1/8]
[1/2, 1/8, 1/8, 1/8]
[1/4, 1/4, 1/4, 1/8]
[1/2, 1/4, 1/8]
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.08.2017, 14:36
Ответы с готовыми решениями:

Направьте в нужном направлении
Привет народ. Хочу попробовать себя в разработке игр под linux. До этого под linux ничего не писал, но есть непреодолимое желание :D В...

Направьте, пожалуйста, в правильном направлении
На данный момент в Java я нахожусь только на начальном уровне, до Java EE ещё не добрался. Конечная цель создание сайта с использованием...

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

5
90 / 84 / 42
Регистрация: 27.09.2015
Сообщений: 316
22.08.2017, 11:15
нужно найти предел разбиения того количества кусочков пицы, которое получится по входной дате
19071990 % 7 + 7 = 0 + 7 = 7 ищем предел разбиения 7
01051990 % 7 + 7 = 2 + 7 = 9 ищем 9

Добавлено через 5 минут
А нет..
Цитата Сообщение от maloi20124 Посмотреть сообщение
имея в распоряжении
кусочки, которые можно получить четырьмя выше описанными правилами
к перебору допускаются только четыре елемента [8 1/2 1/4 1/8]
только их комбинируем
0
230 / 199 / 71
Регистрация: 21.10.2016
Сообщений: 449
22.08.2017, 11:39
Похожа на задачу размена суммы монетами разного достоинства. Рекурсия.
0
0 / 0 / 0
Регистрация: 21.08.2017
Сообщений: 5
22.08.2017, 13:09  [ТС]
я пока пробую вот так вот сделать

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
70
public class Main {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        ArrayList lst = new ArrayList();
        for (int i = 0; i < 11; i++) {
            list.add("1/8");
            System.out.printf(list.get(i)+" ");
        }
        System.out.println();
 
 
        for (int i = 0; i < list.size()-1; i++) {
            if (list.get(i).equals(list.get(i+1)) && list.get(i).equals("1/8")){
                list.set(i+1,"1/4");
                list.remove(i);
                vivod(list);
                System.out.println();
                if(newList(list).get(i).equals(newList(list).get(i+1)) && newList(list).get(i).equals("1/4")) {
                    newList(list).set(i+1,"1/2");
                    vivod(newList(list));
                }
 
                i=0;
            }}
               for (int j = 0; j < list.size()-1 ; j++) {
                    if (list.get(j).equals(list.get(j+1)) && list.get(j).equals("1/4") ){
 
                        list.set(j+1,"1/2");
                        list.remove(j);
                        vivod(list);
                        System.out.println();
                    }}
                   for (int k = 0; k < list.size()-1 ; k++) {
                        if (list.get(k).equals(list.get(k+1)) && list.get(k).equals("1/2") ){
                            list.set(k+1,"1");
                            list.remove(k);
                            vivod(list);
                            System.out.println();
                        }
                    }
 
 
 
        System.out.println();
 
 
    }
 
public static ArrayList newList(ArrayList list){
    ArrayList lst = new ArrayList();
    for (int i = 0; i < list.size() ; i++) {
        lst.add(list.get(i));
    }
 
    return lst;
 
}
 
    public static void vivod(ArrayList list){
        for (int i = 0; i < list.size() ; i++) {
            System.out.print(list.get(i)+ " ");
 
        }
 
 
 
    }
 
 
}
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
22.08.2017, 14:38
Лучший ответ Сообщение было отмечено maloi20124 как решение

Решение

Мой вариант:
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
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
 
public class Pizza {
    public static void main(String[] args) {
        int n;
        if (args.length == 0) {
            System.out.println("Input your birthday (ddmmyyyy): ");
            n = readInput();
        } else {
            n = Integer.parseInt(args[0]);
        }
        List<String> list = new LinkedList<>();
        find(n, 1, list);
    }
 
    public static int readInput() {
        Scanner in = new Scanner(System.in);
        int i = in.nextInt();
        return i % 7 + 7;
    }
 
    public static void find(int totalParts, int startPart, List<String> list) {
        if (totalParts < 0) {
            return;
        }
        if (totalParts == 0) {
            System.out.println(Arrays.toString(list.toArray()));
        } else {
            for (int i = 0; i < 4; i++) {
                if (startPart == 8) {
                    list.add("1");
                } else {
                    list.add("1/" + (8 / startPart));
                }
                find(totalParts - startPart, startPart, list);
                list.remove(list.size() - 1);
                startPart *= 2;
            }
        }
    }
}
2
0 / 0 / 0
Регистрация: 21.08.2017
Сообщений: 5
23.08.2017, 09:57  [ТС]
этот вариант куда более приятный

Добавлено через 19 часов 6 минут
вот конечный рабочий вариант!

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
70
71
72
73
74
75
76
public class Main {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        ArrayList lst;
 
        System.out.println("Input your birthday (ddmmyyyy): " );
        int n = readInput();
        
        for (int i = 0; i < n; i++) {
            list.add("1/8");
            System.out.printf(list.get(i)+" ");
        }
        System.out.println();
 
 
        for (int i = 0; i < list.size()-1; i++) {
            if (list.get(i).equals(list.get(i+1)) && list.get(i).equals("1/8")){
                list.set(i+1,"1/4");
                list.remove(i);
                lst = newList(list);
                vivod(list);
                System.out.println();
 
                proverka(lst,"1/4","1/2");
                proverka(lst,"1/2","1");
 
                i=0;
            }
 
        }
        System.out.println();
 
    }
 
 
 
    public static void proverka(ArrayList lst, String firstValue, String secondValue){
        for (int i = 0; i < lst.size()-1 ; i++){
            if(lst.get(i).equals(lst.get(i+1)) && lst.get(i).equals(firstValue)) {
                lst.set(i+1,secondValue);
                lst.remove(i);
                vivod(lst);
                System.out.println();
 
            }
        }
    }
 
 
 
 
public static ArrayList newList(ArrayList list){
    ArrayList lst = new ArrayList();
    for (int i = 0; i < list.size() ; i++) {
        lst.add(list.get(i));
    }
 
    return lst;
 
}
 
    public static void vivod(ArrayList list){
        for (int i = 0; i < list.size() ; i++) {
            System.out.print(list.get(i)+ " ");
        }
 
    }
 
    public static int readInput(){
        Scanner in = new Scanner(System.in);
        int i = in.nextInt();
        return i%7+7;
    }
 
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.08.2017, 09:57
Помогаю со студенческими работами здесь

Сделать чтобы в зависимости от выбранного положения программа понимала в каком направлении нужно включать электромотор
Прошу помочь. Электро мотор который управляет движением механизма в нем 5 положений ,включение каждого из положений соответствует...

добавление силы в направлении forward ведет Rigidbody ведет объект не в направлении форварда объекта
При первом нажатии на клавишу up объект едет вперед но при поворачи и повторном нажатии на клавишу up объект едет задом наперед вот код: ...

Направьте дальше
работаю с сайтом www.autoalyns.ru. Список слов ограничен - аренда лимузинов, микроавтобусов, аренда автомобилей с водителем в СПб и...

Направьте в русло
Добрый вечер. Упрощу задачу до примитива: 1 сервис, много клиентов. ПО клиентов должно быть мультиплатформенным. Сервис буду...

Направьте на путь истинный!)
Здравствуйте господа и леди форума) Начал я изучать язык программирования с++, выбрал книжку для новичка &quot; Р.Флюре.&quot; Ооп в с++,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru