Jawa / Говнокод #20490 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
import java.util.Scanner;
import java.io.*;

public class Multiply {

    public static int multiplyNumbers(int n, int m)
    {
        int i = 0, result = 0;
        for(i = 0; i < m; i ++)
            result += n;
        return result;
    }

    public static void main(String [] args) {
        Scanner sc = new Scanner(System.in);
        int n,m,ans;
        n = sc.nextInt();
        m = sc.nextInt();
        ans = multiplyNumbers(n,m);
        System.out.println(ans);
    }
}

Запостил: joker1484 joker1484, (Updated )

Комментарии (61) RSS

  • Звездочка на клавиатуре сломалась? Можно было из "import java.io.*" скопировать.
    Ответить
    • Только заметил.

      Первая ссылка: 136 issues, 19 pull requests.
      Вторая ссылка: 24 issuses, 2 pull requests.

      И ведь не лень кому-то было...
      Ответить
    • > FizzBuzzEnterpriseEdition
      Ох лол, оно джаву крашнуло!

      *** buffer overflow detected ***: /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java terminated
      Ответить
  • Упорный студент-оптимизатор.

    public static int MultiplyNumbers(int n, int m)
        {
            int i = 0, result = 0;
    
    	var min = Math.Min(n, m);
    	var max = Math.Max(n, m);
    
            for(i = 0; i < min; i++)
                result += max;
    
            return result;
        }
    Ответить
  • int multiply(int a, int b) {
       int c = 0;
       while (b > 0) {
           if (b & 1)
               c += a;
           b >>= 1;
           a += a;
       }
       return c;
    }
    Ответить
      • /*! \fn int multiply(int a, int b) 
            \brief Multiplies two numbers
            \param a First multiplier
            \param b Second multiplier
            \pre a, b are non-negative
        */
        Пофиксил
        Ответить
      • И что? Какое-нибудь UB из-за сдвигов случится?
        Хотя, в Java нормально отработает с ожидаемым результатом.
        Ответить
          • Так и надо. Больше меня беспокоит, что асимметричные (без min/max) решения дают 0 = multiply(2, -2) != multiply(-2, 2) = -4. Дурацкая четвёрка вылезает.
            Хотя, тут наверно всё предельно логично. Взять двойку минус два раза нельзя, потому и ноль. А вот минус двойку, если таковая всё же нашлась, можно два раза.
            Ответить
  • Предлагаю пойти дальше и представить сложение циклом инкрементов на единицу.

    А инкремент представить циклом побитовых операций:
    bit_number = 0;
    shifted_value = 1 << bit_number;
    if (x & shifted_value == 0) {
      x |= (shifted_value; // если в последнем разряде ноль, просто пишем единицу
    } else {
      x &= ~shifted_value; // иначе обнуляем последний разряд и выполняем перенос единицы в следующий
      bit_number++;
      // тут будет рекурсивный вызов
    }
    Ответить
      • и это не энтерпрайзно

        Энтепрайзно это делегировать это во внешний сервис, чтобы инкапсулировать в нем стратегию умножения, таким образом можно будет легко мигрировать на архитектуры, где умножения нет
        Ответить
        • > легко мигрировать на архитектуры, где умножения нет
          И масштабироваться будет замечательно.
          Ответить
          • Чтобы масштабировать нужно использовать сообщения, и сделать метод асинхронным.

            Ты просто посылаешь мультикаст сообщение: "требуется умножить 2 на 3". Умеющая умножать нода его получает, обрабатывает, и шлет тебе ответ
            Ответить
            • > мультикаст сообщение
              Скорее придётся развернуть очередь (какого-нибудь rabbit mq)... Мы же не хотим, чтобы несколько нод одновременно откликнулись на этот запрос?
              Ответить
              • Ну это зависит от использования. Если каждое сообщение будет иметь уникальный ID, то легко можно будет отстрелить кучу ответов на одно сообщение.

                MQ нам нужен в любом случае, причем нужно учесть транзакционность чтобы сообщения не потерялись. Можно использовать СУБД в качестве бекенда (если там есть two phase commit), а у MS в транзакция может участвовать файловая система.

                Вообще вырисовывается достаточно универсальная штука. Возможно нам следует разработать новый xml-based DSL для подобных задач, опубликовать его схему, и сделать стандарт для работы оного поверх SOAP
                Ответить
            • > Ты просто посылаешь мультикаст сообщение: "требуется умножить 2 на 3". Умеющая умножать нода его получает, обрабатывает, и шлет тебе ответ

              Чето так себе архитектура. А если разные ланы? Надо сервисдискавери через консул или хотя бы днс.
              Ответить
              • Всмысле мультикаст-домейны разные?
                Ну в теории можно настроить передачу мультикаст траффика (см. IGMP, PIM). Но лучше и правда использовать какой-то discovery вроде srv записи в DNS (как в AD)
                Ответить
            • Только надо про SSL не забыть, чтоб кто попало херню не сообщил.
              Но если длинной арифметики нет, то не беда, просто посылаешь мультикаст сообщение: "требуется проверить подлинность".
              Ответить
              • Тогда и хранилище сертификатов нужно секьюрное.
                Ответить
                • Ну и иерархию супервизоров, чтобы всю эту инфраструктуру мониторить...
                  Ответить
                  • Её одной мало, нужна N+M географическая избыточность. Для сети использовать, естественно, openflow и SCTP с multihoming.
                    Ответить
                    • И чуть не забыл, что всё должно быть по возможности в виде микросервисов в докере.
                      Ответить
                        • и чтобы у него "ls" в баш не завезли, и он бы его сам реализовывал на перле, и рассказывал бы при этом какое баш говно
                          Ответить
                            • Чисто функциональный иммутабельный блокчейн на лиспе.
                              Ответить
                                  • > Пролог в качестве БД.
                                    Да ну, слишком адекватно.

                                    В качестве БД надо взять машину Анала Тьюринга. У неё же лента бесконечна, можно весь инет вместить.
                                    Ответить
                                    • Но сколько хуёв может вместить твоё очко, Тьюрингу и не снилось...
                                      Ответить
                                      • Тьюринг сам был пассивным геем (Борманд как бэ намекает), так что, не соглашусь с тобой.
                                        Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8