Нажмите CTRL-D чтобы добавить нас в закладки
HackZone.RU - Помогите решить задачку projecteuler
Войти / Регистрация / Участники
Определение даты выпуска iPhone по серийному номеру
-
Поиск по сайту
Форумы



Реклама

Программирование / Другое RSS подписка на сообщения с форума Subscribe


Новая тема Наиболее обсуждаемые темы Наиболее посещаемые темы
Поиск 
Период
Перейти

Просмотров - 2850
Помогите решить задачку projecteuler
Добавить этот топик в закладки »
RSS-лента ответов »Subscribe
Tix




Silver Member
# | Сообщение добавлено 10.04.2010 12:30:07
Отредактировано 11.04.2010 00:43:59 by Tix
Самая первая задача:
 
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
 
Find the sum of all the multiples of 3 or 5 below 1000.
 

вот мой руби код:
 
Text
y = 1000/3
f = 1000/5
d.to_f
m.to_f
 
def probl(a)
  y.times do
    3 += d
    d += x
  end
  puts x
end
 
def probl2(a)
  f.times do
    5 += m
    m += z
  end
  puts z
end
 
puts probl(y)
puts prob2(f)

 
ну что тут не правильно??
напишите алгоритм на ООП плз
 

 
ICQ:73-81-70
Сказать спасибо Ответить Цитировать

_ruzmaz_


Gold Member
# | Сообщение добавлено 10.04.2010 13:14:15
Отредактировано 10.04.2010 19:34:58 by _ruzmaz_
А как здесь учитываются числа, делящиеся и на 3, и на 5?
И потом, наверно лучше puts probl2(f) писать в последней строке.
 
Добавлено 10.04.2010 19:35:11 (через 14 секунд )
 
С руби как-то не приходилось дело иметь, но все-таки зачем в probl и probl2 какие-то параметры передавать, когда в них уже юзаются y и f глобальные?
 
Добавлено 10.04.2010 19:35:24 (через 13 секунд )
 
И кстати, разве x и z не должны быть как-то взаимосвязаны т.к. нужна сумма всех чисел которые делятся на 3 или 5 (в пределах 1000), а не отдельные суммы чисел делящихся на 3 и делящихся 5?
 
Добавлено 10.04.2010 19:35:42 (через 19 секунд )
 
К тому же x и z стоит наверно определять глобально перед probl и probl2 и одну из них инициализировать нулем.
Сказать спасибо Ответить Цитировать

Tix




Silver Member
# | Сообщение добавлено 11.04.2010 00:48:41
А как здесь учитываются числа, делящиеся и на 3, и на 5?
И потом, наверно лучше puts probl2(f) писать в последней строке.
ну да, это просто описка
С руби как-то не приходилось дело иметь, но все-таки зачем в probl и probl2 какие-то параметры передавать, когда в них уже юзаются y и f глобальные?
вот я и незнаю.. можно ли менять те переменные или они такимиже при выхоже и остануться...
И кстати, разве x и z не должны быть как-то взаимосвязаны т.к. нужна сумма всех чисел которые делятся на 3 или 5 (в пределах 1000), а не отдельные суммы чисел делящихся на 3 и делящихся 5?
блин.. точно.. этот алгоритм не подходит...
К тому же x и z стоит наверно определять глобально перед probl и probl2 и одну из них инициализировать нулем.
вроде в руби этого можно и не делать..
 
............................................
 
напишите мне алгоритм на любом языке, лучше на питоне или пхп
... или на русском
 

 
ICQ:73-81-70
Сказать спасибо Ответить Цитировать

_ruzmaz_


Gold Member
# | Сообщение добавлено 11.04.2010 01:55:47
Tix:
... или на русском

... или на руби))
 
Text

def sumfunc(n, m)
  return 0 if (n < 1) or (m < 1) or (n >= m)
  s = 0
  s_ = 0
  k = m/n
  if m%n == 0
    k -= 1
  end
  k.times do
    s_ += n
    s += s_
  end
  return s
end
 
print sumfunc(3, 1000) + sumfunc(5, 1000) - sumfunc(3*5, 1000)
 
Сказать спасибо Ответить Цитировать

Actor




Advanced Member
# | Сообщение добавлено 11.04.2010 14:20:24
Отредактировано 12.04.2010 01:10:11 by Actor
C++

#include <iostream.h>
#include <conio.h>
int main()
{
  int n = 1000;
  int sum = 0;
  for (int i = 3; i < n; i++) if (!(i % 3) || !(i % 5)) sum += i;
  cout << "sum = " << sum;
  getch();
  return 0;
}
 

вроде так, но код никуда не подставлял, могут выскочить косяки

первый косяк исправил. теперь подумаю над лучшим алгоритмом :)
Сказать спасибо Ответить Цитировать

_ruzmaz_


Gold Member
# | Сообщение добавлено 11.04.2010 15:45:08
Отредактировано 12.04.2010 01:07:42 by _ruzmaz_
согласно условию задачи должно быть
for (int i = 3; i < n; i++)
 
Добавлено 12.04.2010 01:08:12 (через 1 минута 31 секунда )
 
код не совсем оптимален по быстродействию: n циклов, в каждом из которых как минимум одна операция деления - имхо не айс
 
Добавлено 12.04.2010 01:08:26 (через 14 секунд )
 
но если n не велико, то подобное решение в одну строчку кода может быть полезно)
 
Добавлено 12.04.2010 12:27:45 (через 11 часов 19 минут 19 секунд )
 
совсем упустил из вида что в том коде, который я раньше запостил, простая арифметическая прогрессия и циклы можно и не мутить))
 
Text

def sumfunc(n, m)
  return 0 if (n < 1) or (m <= 1) or (n >= m)
  k = (m - 1)/n
  return ((k + 1)*n*k)/2
end
 
print sumfunc(3, 1000) + sumfunc(5, 1000) - sumfunc(3*5, 1000), "\n"
 
Сказать спасибо Ответить Цитировать


Только зарегистрированные пользователи могут оставлять сообщения в форуме

Зарегистрироваться *** Авторизоваться

 Последние новости и статьи  Последние сообщения с форумов
  • WhatsApp уверяет пользователей, что Facebook не имеет доступа к и...
  • Однострочная команда в Windows 10 может повредить жесткий диск с ...
  • Кардерский форум Joker’s Stash объявил о закрытии
  • Релиз ядра Linux 5.9
  • Российские хакеры вооружились уязвимостью Zerologon
  • Тысячи приватных звонков американских заключенных оказались в отк...
  • Шифровальщик атаковал немецкую компанию Software AG
  • Злоумышленники используют службу Windows Error Reporting для бесф...
  • Microsoft предупредила о вымогателях, которые выдают себя за МВД ...
  • Инфостилер Valak ворует информацию из почтовых систем Microsoft E...

    Все новости... Все статьи... Прислать новость RSS
  • Взлом и безопасность / Разное » Re: Помощь в скачивании платного файла
  • Взлом и безопасность / Разное » Помощь в скачивании платного файла
  • Разное / Куплю, приму в дар » куплю | ваш аккаунта | получение нового | описание внутри
  • Разное / Предложения работы » Специалиста
  • Downloads / Другое » Re: Нужна база емайл адресов юр. лиц
  • Downloads / Другое » Нужна база емайл адресов юр. лиц
  • Разное / Предложения работы » Нужен взлом mail и gmail почты
  • Взлом и безопасность / Разное » Re: Нужна помощь в скачивании файла
  • Взлом и безопасность / Разное » Нужна помощь в скачивании файла
  • Разное / Предложения работы » требуется взлом почт на постоянной основе

    Все форумы... RSS


  • Разместить рекламу
    © HackZone Ltd. 1996-2020. Все права зарегистрированы.
    Перепечатка материалов без согласования и указания источника будет преследоваться по Закону

    О проекте | История проекта | Размещение рекламы | Обратная связь | Правила поведения на портале
    contador de visitas счетчик посещений

    #{title}

    #{text}

    x

    #{title}

    #{text}