Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2011, 21:30   #1
llatpoh
Пользователь
 
Регистрация: 22.10.2011
Сообщений: 12
Радость есть 4 сложные задача,и пара карявых решений

http://olympiads.ru/zaoch/2011/problems/problems.pdf
вообщем текста есть на этой ссылке,первые две я решил
четвертая 2 варианта кода,работает на 70,дпугое на 71 балл из 72
Код:
#include <iostream>

template <typename T>
T gcd(T a, T b)
{

while (a)
{
// a<b
T t = a;
a = b%a;
b = t;
}
return b;
}

template <typename T>
T lcm(T a, T b)
{
return (a/gcd(a, b))*b;
}

static const unsigned long long mult = 1000000000;

int main()
{
std::ios_base::sync_with_stdio(false);
long double l, a, b;
std::cin>>l>>a>>b;
unsigned long long a_ = mult*a, b_ = mult*b, l_ = mult*l;
unsigned long long lcm_ = lcm(a_, b_);
unsigned long long count = l_/lcm_;
if (l_%lcm_==0)
{
--count;
}
std::cout<<count<<std::endl;
}
и второй код
Код:
var
l,a,b:Real;aa,bb,ll,a1,x:int64;
begin
Readln(l,a,b);aa:=round(a*1000000000);bb:=round(b*1000000000);ll:=round(l*1000000000);
if(aa<bb)then
begin
x:=aa;
aa:=bb;
bb:=x;
end;

a1:=aa;
while((a1 mod bb)<>0)and(a1<ll))do
begin
a1:=a1+aa;
end;

if(a1 mod b=0)and(l mod a1<>0) then Writeln(l div a1) else
if(a1 mod b=0)and(l mod a1=0) then writeln (l div a1 -1) else Writeln('0');
end.
есть попытки решить третюю,но она работает на 50процентов,думаю надо в корни менять,может кто накинет хотя бы идеи?

Последний раз редактировалось llatpoh; 22.10.2011 в 21:47. Причина: code
llatpoh вне форума Ответить с цитированием
Старый 23.10.2011, 13:48   #2
Ромиk
Пользователь
 
Регистрация: 11.09.2011
Сообщений: 42
По умолчанию

Цитата:
Сообщение от llatpoh Посмотреть сообщение
http://olympiads.ru/zaoch/2011/problems/problems.pdf
вообщем текста есть на этой ссылке,первые две я решил
четвертая 2 варианта кода,работает на 70,дпугое на 71 балл из 72
Код:
#include <iostream>

template <typename T>
T gcd(T a, T b)
{

while (a)
{
// a<b
T t = a;
a = b%a;
b = t;
}
return b;
}

template <typename T>
T lcm(T a, T b)
{
return (a/gcd(a, b))*b;
}

static const unsigned long long mult = 1000000000;

int main()
{
std::ios_base::sync_with_stdio(false);
long double l, a, b;
std::cin>>l>>a>>b;
unsigned long long a_ = mult*a, b_ = mult*b, l_ = mult*l;
unsigned long long lcm_ = lcm(a_, b_);
unsigned long long count = l_/lcm_;
if (l_%lcm_==0)
{
--count;
}
std::cout<<count<<std::endl;
}
это не паскаль, ща посмотрю 2 код
и как говорил Фрейд : нам надо фрейд
Ромиk вне форума Ответить с цитированием
Старый 23.10.2011, 14:00   #3
Sna1L
Форумчанин
 
Аватар для Sna1L
 
Регистрация: 15.03.2011
Сообщений: 272
По умолчанию

оффтоп. ТС, ай-ай-ай, как не стыдно?) Олимпиада проверяет ВАШИ собственные навыки.
Sna1L вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
есть пара вопросов!контролер весов evgenukr Visual C++ 5 29.06.2011 15:25
Задача на принятие решений в условиях риска! Delphi boss89 Помощь студентам 2 20.10.2010 13:14
Есть задача! Евгений Громов Помощь студентам 8 27.08.2010 11:04
Безумно сложные задачки!!!! Метод Гаусса, итераций, метод половинного деления, задача Коши и т.д. Хомяк!!!!! Помощь студентам 4 08.07.2009 10:08
задача на сложные действия со строками Converse Паскаль, Turbo Pascal, PascalABC.NET 5 03.01.2008 07:34