Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal] Периоды 
:(
    Опции темы
Strannik
Дата 29.1.2007, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.1.2007

Репутация: 1
Всего: 2



Не знал куда запостить, выбирал между "Центром помощи", "Алгоритмами" и "Интересными задачами по программ." Если не туда попал, перенесите.

Собственно задача:

Дано
 k1,k2...kn (натуральные)
 t1,t2...tn (тоже натуральные)

Найти: x, такое что k1+t1*x=k2+t2*x=...=kn+tn*x.

Если кто-нибудь знает, пишите.
PM MAIL   Вверх
Rodman
Дата 29.1.2007, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 26
Всего: 122



Код

Uses crt;
const n=100
var a:array[1..n] of integer;
    b:array[1..n] of integer;
    i,j:integer; 
    x:real;
    bb,t:boolean;
BEGIN
clrscr;
randomize;
for i:=1 to n do
      a[i]:=random(9)+1;
 for j:=1 to n do
     b[j]:=random(9)+1;
bb:=false;
 x:=-50;
while not bb do
begin
   t:=false;
  for i:=1 to n-1 do
     if((a[i]*x+b[i]*x)<>(a[i+1]*x+b[i+1]*x))then
           t:=true;
    if(t)then
        break
   else
    x:=x+0.1;
end;
  writeln(x);
readln;
END.


не уверен, но так прикинул...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Strannik
Дата 29.1.2007, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.1.2007

Репутация: 1
Всего: 2



Извини, я не написал что х-натуральное...

Это сообщение отредактировал(а) Strannik - 29.1.2007, 22:16
PM MAIL   Вверх
Rodman
Дата 29.1.2007, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 26
Всего: 122



ну шаг поменять и все...

я уже не совсем помню, но натурально это > 0... если лажаю поправте.
Код

Uses crt;
const n=100
var a:array[1..n] of integer;
    b:array[1..n] of integer;
    x,i,j:integer; 
    bb,t:boolean;
BEGIN
clrscr;
randomize;
for i:=1 to n do
      a[i]:=random(9)+1;
 for j:=1 to n do
     b[j]:=random(9)+1;
bb:=false;
 x:=-50;
while (not bb)or(x<100000) do
begin
   t:=false;
  for i:=1 to n-1 do
     if((a[i]*x+b[i]*x)<>(a[i+1]*x+b[i+1]*x))then
           t:=true;
    if(t)then
        break
   else
    inc(x);
end;
  writeln(x);
readln;
END.

PM MAIL WWW Skype GTalk YIM MSN   Вверх
Strannik
Дата 29.1.2007, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.1.2007

Репутация: 1
Всего: 2



Тогда вопросы:

1: Почему Х инициализируется как -50? Это описка?
2: Строка ((a[i]*x+b[i]*x)<>(a[i+1]*x+b[i+1]*x)) имелась ввиду как: ((a[i]*x+b[i])<>(a[i+1]*x+b[i+1]))?
Или это тоже описка?
3: Почему 100000 итераций будет достаточно?
PM MAIL   Вверх
Rodman
Дата 29.1.2007, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 26
Всего: 122



Цитата(Strannik @  29.1.2007,  21:46 Найти цитируемый пост)
1: Почему Х инициализируется как -50? Это описка?

ну если я был прав, то начиная с 1


Цитата(Strannik @  29.1.2007,  21:46 Найти цитируемый пост)
Строка ((a[i]*x+b[i]*x)<>(a[i+1]*x+b[i+1]*x)) имелась ввиду как: ((a[i]*x+b[i])<>(a[i+1]*x+b[i+1]))?
Или это тоже описка?

так точно... один х лишний... (вечер  smile )

Цитата(Strannik @  29.1.2007,  21:46 Найти цитируемый пост)
3: Почему 100000 итераций будет достаточно? 

просто мне кажется дальше уже безполезно, но не факт.... эту границу можешь изменить
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Strannik
Дата 29.1.2007, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.1.2007

Репутация: 1
Всего: 2



Цитата

просто мне кажется дальше уже безполезно, но не факт.... эту границу можешь изменить 

Э-эх... если бы всё так просто было... переборный алгоритм я знаю. Просто задача олимпиадная, самая сложная задача с областной олимпиады (11кл) прошлого года. 
Если радикально увеличить кол-во итераций, то время работы превысит критическое. Да и сомневаюсь я что задача переборная. Тут что-то умное...
PM MAIL   Вверх
Rodman
Дата 29.1.2007, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 26
Всего: 122



Цитата(Strannik @  29.1.2007,  22:14 Найти цитируемый пост)
Тут что-то умное... 

ну так сразу надо было пояснять...

ну первое что в голову приходит ограничить число итераций (если результат не найден) допустимым диапазоном integer'a...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Strannik
Дата 29.1.2007, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.1.2007

Репутация: 1
Всего: 2



Что-то мне кажется что тут всё завязано на диофантовы уравнения и китайскую теорему об остатках. Но об этих вещах я если и имею представление, то очень и очень смутное...

Это сообщение отредактировал(а) Strannik - 29.1.2007, 23:50
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.