IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> ур-ние
сообщение
Сообщение #1


Гость






Даны три числа A, B и M (0<=A,B<M). Найдите такое X (0<=X<M), что A*X имеет остаток B при делении на M.

Входные данные
Даны целые A, B и M (1<=M<=10^9).

Выходные данные
Выведите любое Х удовлетворяющее условию задачи. Если такого не существует -- выведите -1.

Пример

Ввод

3 2 10



Вывод

4


как решать ума не приложу.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


А просто циклом от 0 до M проверять все возможные X не подходит?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Перебор врядли .. проверь вот это :

var
a,b,m : integer;
begin
readln(a); readln(b); readln(m);
if (m + b) mod a <> 0 then writeln('no')
else writeln((m + b) div a);
readln;
end.


Цитата(Orion)
А просто циклом от 0 до M проверять все возможные X не подходит?

Ага, если M = 10 ^ 9 = 1000000000 :D

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата(klem4 @ 16.01.2006 22:13) *

Перебор врядли .. проверь вот это :

var
a,b,m : integer;
begin
readln(a); readln(b); readln(m);
if (m + b) mod a <> 0 then writeln('no')
else writeln((m + b) div a);
readln;
end.

Ага, если M = 10 ^ 9 = 1000000000 :D

klem4? не всегда работает. тесты дать не могу т.к. сам их не знаю.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


приведи хотя бы те на которых не работает, подумаем еще .. решение очень простое должно быть, я уверен

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата(klem4 @ 16.01.2006 22:35) *

приведи хотя бы те на которых не работает, подумаем еще .. решение очень простое должно быть, я уверен

Я не знаю мх. мы тут с другом решаем напару. используя онлайн-тестинг.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Отлично, что за онлай тест ? ссылку дал бы чтоли, у нас телепатов нет.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






сссори,но я она,А НЕ ОН. к сожалению он не доступен для москвы. тока для нашего региона.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Чот я запутался mega_chok.gif

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

a = 3; b = 1; m = 7;

aX mod m = b;
3x mod 7 = 1;
x = 5;

Далее рассуждение :

ax mod m = b;
(ax - b) = ax div m * m <=> (3*5 - 1) = (3*5 div 7) * 7 <=> 14 = (15 div 7) * 7 <=> 14 = 2 * 7;
ax - ax div m * m = b; <=> 15 - 14 = 1

а вот дальше нестыковка ...

x = b / (a - a div m * m); так как a div m = 3 div 7 = 0, знаменатель равен просто a, и х получается = 1/3 sad.gif

пора спать.

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Женский

Репутация: -  0  +


ax mod m = b
ax-b mod m = 0
ax-b = km k-целое надо подобрать, чтобы найти x

x:=(k*m+b) div a

Код
var
   a,b,m,k : integer;
begin
   readln(a,b,m);
   k:=1;
   while (k*m+b) mod a <>0 do inc(k);
   write ((k*m+b) div a);
   readln;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Pola, вводим в приведенную тобой программу следующие данные:
A = 3; B = 200; M = 156000
Что должно быть в результате?

-1...

Твоя программа возвращает 8376 при запуске в TP, и -715815464 под FPC...
Цитата(Правила Раздела)
7. Проверяйте программы перед тем, как запостить их!!!
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Женский

Репутация: -  0  +


Ну вот...
то дай ошибку поикать, то проверяй сама smile.gif

Ты меня конечно извини, но если ты уже ищешь у всех в программах ошибки, а сама при этом их допускаешь - то где логика?


Какие будут предложения для проверки несуществования х?

чем нибудь k ограничим?

Я тебя конечно извиняю, volvo, но я не говорила, что сама их не допускаю
В одной из тем, даже просила поискать...


я так думаю: не существует, если
1) b>=m
2) ? какие еще ?

Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Женский

Репутация: -  0  +


так лучше?
var
a,b,m,k : longint;
begin
readln(a,b,m);
if (0<=a) and (b<m) then
begin
k:=1;
while ((k*m+b) mod a <>0) and ((k*m+b) div a < m) do inc(k);
if ((k*m+b) mod a = 0) and ((k*m+b) div a < m) then write ((k*m+b) div a) else write(-1);
end
else write(-1);
end.


Сообщение отредактировано: Pola -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 14.05.2024 7:09
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name