Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Интересная постановка задачи / 25 сообщений из 25, страница 1 из 1
31.03.2015, 01:18
    #38921780
Warl0ck_01
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
В общем решаю задачки из сборника Златопольского

Наткнулся на интересную постановку задачи:

Даны 2 целых числа A и B. Если A делится на B или B делится на А (имеется ввиду без остатка), то вывести 1, иначе любое другое число. Условные операторы и операторы цикла не использовать.

Моих познаний в Java пока не хватает для решения задачи с таким условием. Поделитесь опытом или подскажите направление куда копать, не обязательно на Java. Да и больше интересует логическое направление а не само решение с кодом (код предлагаю под спойлер). 2-х часовое Google'ение навело на мысль что нужно полиморфизм использовать, но до конкретных вещей все равно не могу дойти =).
...
Рейтинг: 0 / 0
31.03.2015, 01:44
    #38921783
MikkiMouse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
Warl0ck_01,

Полиморфизм не нужен . Решение в одну строчку :)
...
Рейтинг: 0 / 0
31.03.2015, 01:47
    #38921784
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
с1=a/b
c2=b/a

print(c1*c2 + 1)

А вообще от решения таких задач скиллов в программировании сильно не прибавится..
...
Рейтинг: 0 / 0
31.03.2015, 01:49
    #38921785
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
забыл про спойлер, не знаю как отредачить
...
Рейтинг: 0 / 0
31.03.2015, 14:44
    #38922554
Warl0ck_01
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
забыл никс1=a/b
c2=b/a

print(c1*c2 + 1)

А вообще от решения таких задач скиллов в программировании сильно не прибавится..

Что не совсем понятно решение:

при любых a и b результат c1*c2 + 1 будет равен 2. Где подвох?
...
Рейтинг: 0 / 0
31.03.2015, 14:52
    #38922574
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
Warl0ck_01Где подвох?
В непонимании целочисленного деления?
...
Рейтинг: 0 / 0
31.03.2015, 14:56
    #38922583
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
Warl0ck_01,

Например, a=3 , b=1.

Проверяем
int c1=a/b (=?)
int c2=b/a (=?)

и наконец c1*c2+1 равно?

Так что не всегда 2. Но и 1 немного не верен:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 public static void main(String[] args) {
  int a = 5;
  int b = 6;
  int c1 = a/b;
  int c2 = b/a;
  System.out.println("5 и 6 ="+Integer.toString(c1*c2+1));
  a = 5;
  b = 5;
  c1 = a/b;
  c2 = b/a;
  System.out.println("5 и 5 ="+Integer.toString(c1*c2+1));
 }
...
Рейтинг: 0 / 0
31.03.2015, 15:05
    #38922602
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
Blazkowicz,

try { } catch() {}

Можно не считать условным оператором?
...
Рейтинг: 0 / 0
31.03.2015, 15:06
    #38922604
Grglgn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
а я бы вот так:

Код: java
1.
System.out.println((Math.abs(a%b) * Math.abs(b%a) +1))
...
Рейтинг: 0 / 0
31.03.2015, 15:06
    #38922605
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
И вообще делится ли 0 на 0? Вот в чем вопрос.
...
Рейтинг: 0 / 0
31.03.2015, 15:08
    #38922612
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
Grglgn,

Math.abs(a%b)

Ожидается нецелочисленность остатка от деления целых чисел?
...
Рейтинг: 0 / 0
31.03.2015, 15:14
    #38922636
Grglgn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
Сергей Арсеньев,

я не ожидал нецелочисленность. а что?
...
Рейтинг: 0 / 0
31.03.2015, 15:18
    #38922644
Grglgn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
Сергей Арсеньев,

но ожидается отрицательность
...
Рейтинг: 0 / 0
31.03.2015, 15:21
    #38922653
Grglgn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
Сергей Арсеньев,
можно, наверное, доказать как-то что этот abs тут лишний, но я уж на всякий случай, так сказать... Долго не думал, просто вдруг возникло решение, сразу и написал - не коммерческий продукт, все таки :)
...
Рейтинг: 0 / 0
31.03.2015, 15:23
    #38922660
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
Grglgn,

Math.abs - это читинг - внутре сравнение то наверняка есть.

А при какой отрицательности 0 при % появится ложно?
...
Рейтинг: 0 / 0
31.03.2015, 15:25
    #38922670
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
Grglgn,

Осталось добавить безусловную проверку на 0 (он ведь целое число).
...
Рейтинг: 0 / 0
31.03.2015, 15:39
    #38922710
Grglgn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
Сергей Арсеньев,
на случай если при сложении взаимоунчитожатся . Ну да, посмотрел на это внимательнее, не нужны абсы.
...
Рейтинг: 0 / 0
31.03.2015, 15:40
    #38922714
Grglgn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
Сергей АрсеньевGrglgn,

Осталось добавить безусловную проверку на 0 (он ведь целое число).


нет, ну на это уже нет времени :)
...
Рейтинг: 0 / 0
31.03.2015, 16:44
    #38922882
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
Сергей АрсеньевMath.abs - это читинг - внутре сравнение то наверняка есть.
Код: java
1.
2.
3.
    public static int abs(int i) {
        return (i >= 0) ? i : -i;
    }

...
Рейтинг: 0 / 0
31.03.2015, 16:54
    #38922911
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
для a=b предложенное решение не годится. Я бы еще умножил на (a-b)
Код: plaintext
print(c1*c2*(a-b) + 1)
...
Рейтинг: 0 / 0
31.03.2015, 17:10
    #38922936
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
^ имелась в виду манипуляция с остатками, а не деление, как предложено вначале ))
...
Рейтинг: 0 / 0
31.03.2015, 19:01
    #38923089
Warl0ck_01
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
Сергей АрсеньевWarl0ck_01,

Например, a=3 , b=1.

Проверяем
int c1=a/b (=?)
int c2=b/a (=?)

и наконец c1*c2+1 равно?

Так что не всегда 2. Но и 1 немного не верен:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 public static void main(String[] args) {
  int a = 5;
  int b = 6;
  int c1 = a/b;
  int c2 = b/a;
  System.out.println("5 и 6 ="+Integer.toString(c1*c2+1));
  a = 5;
  b = 5;
  c1 = a/b;
  c2 = b/a;
  System.out.println("5 и 5 ="+Integer.toString(c1*c2+1));
 }



как я понял данная реализация не является решением с учетом условий задачи.
Господа а задача вообще имеет решение в такой постановке условия?
...
Рейтинг: 0 / 0
31.03.2015, 19:31
    #38923102
Warl0ck_01
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
Разобрался. На мысль конечно навели =). Спасибо.
Код:

public class Task02_043 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Enter two numbers");
int a = in.nextInt();
int b = in.nextInt();

System.out.println(checkNumbers(a, b));
}

private static int checkNumbers(int a, int b) {
int result = (a%b)*(b%a) + 1;
return result;
}
}
...
Рейтинг: 0 / 0
01.04.2015, 11:17
    #38923551
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
Warl0ck_01,

опять же по правилам математики:
- 0 число целочисленное
- 0 делится без остатка на любое целое число кроме самого себя
- на 0 делить нельзя, а значит и без остатка тоже.

Т.е. чтобы задачка стала интересной. В случае если одно из чисел 0 надо вывести 1, а в случае если оба - не 1. И это без проверок.
...
Рейтинг: 0 / 0
02.04.2015, 17:07
    #38925358
regal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная постановка задачи
м.б.
return a==b?1:0;
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Интересная постановка задачи / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]