Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109

Задачка для мозга

26.10.2011, 09:17. Показов 5478. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите решить задачку:

Рассеянный кассир, оплачивая чек мистеру X, перепутал доллары и центы и отсчитал клиенту доллары вместо центов и центы вместо долларов. Купив газету за пять центов, X обнаружил, что денег у него вдвое больше, чем он должен был получить по чеку. На какую сумму был выписан чек?

Нашел ее решение в устном виде, известно что используется диофантово ур-ие. Но как сделать решение задачи на Си в общем виде, чтоб программа сама нашла ответ, ни как догнать не могу... Полное решение не прошу) Хотя бы советы, или мысли по поводу задачи. Хочется все таки самому сделать в итоге.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.10.2011, 09:17
Ответы с готовыми решениями:

Работа с реестром, взрыв мозга
Хех, доброго времени суток тебе, форумчанин. В муках уже второй день, никак не могу решить проблему обнаружения данных в реестре. Что я...

Вынос мозга с чтением файла
Здравствуйте. К моему сожалению облазив Яндекс и Гугл, я не смог найти решения проблемы и поэтому вынужден просить помощи у вас. ...

Задачка для С++
даны два числа. Вывести большее из них

28
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
26.10.2011, 10:06
[quote=DenProx;2105431]Хотя бы советы, или мысли по поводу задачи. [quote]
Пусть А - цена товара
Это вещественное число, т.к. в задаче речь ведётся и про доллары и про центы
Итак А = В + С/100 (где В - число долларов С - число центов)

Бедный мистер Х сделал следующую проплату
D + E (где D = С - число долларов Е = В - число центов)
Переведём D + E в доллары, получим A1 = D + E/100

Имеем разницу
А - А1 = В + С/100 - С + В/100
Пусть в кошельке изначально было Z долларов
Цитата Сообщение от DenProx Посмотреть сообщение
что денег у него вдвое больше, чем он должен был получить по чеку.
Имеем (Z - A)*2 = (Z - A1)

Вот система
А - А1 = В + С/100 - С + В/100
(Z - A)*2 = (Z - A1)

Решите её относительно В и С, как по мне всё довольно просто...
1
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
26.10.2011, 10:09  [ТС]
-=ЮрА=-, спасибо) буду думать)
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
26.10.2011, 10:15
Продолжу (Z - A)*2 = (Z - A1) => Z = A - A1
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
А - А1 = В + С/100 - С + В/100
- как видим стоимость покупки зависит от изначального количества денег в кошельке мистера Х
Получаем
100*Z = 101*В - 99*С

Добавлено через 3 минуты
DenProx, сама программа не проблемма, меня смущает множественнность решений
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
стоимость покупки зависит от изначального количества денег в кошельке мистера Х
, вы говорили что обладаете

Цитата Сообщение от DenProx Посмотреть сообщение
Нашел ее решение в устном виде, известно что используется диофантово ур-ие.
- приведите это решение, написать программу для меня не проблемма, сам алгоритм нужен, вот
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
26.10.2011, 10:25  [ТС]
-=ЮрА=-,

Рассеянный кассир, оплачивая чек мистеру Брауну, перепутал доллары и центы и отсчитал клиенту доллары вместо центов и центы вместо долларов. Купив газету за пять центов, Браун обнаружил, что денег у него ровно в двое больше, чем он должен получить по чеку. На какую сумму был выписан чек?
Решение: Пусть х – число долларов, а у – число центов в той сумме, на которую мистер Браун выписал чек. Запишем условие задач в виде уравнения: 100у+х–5=2(100х+у), или, 99у-199х=5. Это диофантово уравнение, имеющее бесконечно много решений в целых числах. Обычный метод решения с помощью непрерывных дробей дает наименьшее значение в положительных числах х=31, у=63. Следовательно, мистер Браун выписал чек на сумму 31 доллар 63 цента. Это единственный ответ к задачи, поскольку ближайшее к найденному решение х=129, у=262 не удовлетворяет требованию: у должен быть меньше 100 (В одном долларе сто центов). Ответ: 31 доллар 63 цента.

http://www.tgl.net.ru/wiki/ind... B8%D0%B5_7
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
26.10.2011, 10:34
Цитата Сообщение от DenProx Посмотреть сообщение
Это диофантово уравнение, имеющее бесконечно много решений в целых числах.
- а ну получается я был прав, ну что тогда я попробую организовать этот перебор
Цитата Сообщение от DenProx Посмотреть сообщение
с помощью непрерывных дробей
и вконце будет пропечатано

Цитата Сообщение от DenProx Посмотреть сообщение
наименьшее значение в положительных числах х=31, у=63
+ учту эти ограничения
Цитата Сообщение от DenProx Посмотреть сообщение
у должен быть меньше 100
. т.е программа нужна чтобы сделать перебор за насМне понадобиться какое-то время, хотя Вы тожете можете попробовать указанный мною пробор поорганизовывать, когда буду готов отпишусь и сравним что у нас получилось, как Вам идея?
1
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
26.10.2011, 10:38  [ТС]
-=ЮрА=-, идея хорошая) но я только вечером возможно буду готов... щас на работе, времени нет
0
26.10.2011, 10:40

Не по теме:

Цитата Сообщение от DenProx Посмотреть сообщение
щас на работе, времени нет
-аналогично сижу на форуме параллельно с планами на ноябрь:)Тогда до вечера;)

0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
27.10.2011, 09:01  [ТС]
-=ЮрА=-,

Не по теме:

ок :)



Добавлено через 22 часа 19 минут
Что то у меня пока не особо получается. Еще и работы привалило... в нете нашел решение подобной задачи, но ответ выдает не совсем такой как указан в приведенном мной примере выше.

вот код, который я нашел:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/* Author:  Pate Williams (c) 1997 */
 
#include <stdio.h>
 
#define DEBUG
 
 
void extended_euclid(long a, long b, long *x, long *y, long *d)
 
/* calculates a * *x + b * *y = gcd(a, b) = *d */
 
{
 
  long q, r, x1, x2, y1, y2;
 
 
  if (b == 0) {
 
    *d = a, *x = 1, *y = 0;
 
    return;
 
  }
 
  x2 = 1, x1 = 0, y2 = 0, y1 = 1;
 
  #ifdef DEBUG
  printf("------------------------------");
  printf("-------------------\n");
  printf("q    r    x    y    a    b    ");
  printf("x2   x1   y2   y1\n");
  printf("------------------------------");
  printf("-------------------\n");
  #endif
 
  while (b > 0) {
 
    q = a / b, r = a - q * b;
 
    *x = x2 - q * x1, *y = y2 - q * y1;
 
    a = b, b = r;
 
    x2 = x1, x1 = *x, y2 = y1, y1 = *y;
 
    #ifdef DEBUG
    printf("%4ld %4ld %4ld %4ld ", q, r, *x, *y);
    printf("%4ld %4ld %4ld %4ld ", a, b, x2, x1);
    printf("%4ld %4ld\n", y2, y1);
    #endif
 
  }
 
  *d = a, *x = x2, *y = y2;
 
  #ifdef DEBUG
  printf("------------------------------");
  printf("-------------------\n");
  #endif
 
}
 
 
 
int main(void)
{
 
  long a = 199, b = 98, d, x, y;
 
  extended_euclid(a, b, &x, &y, &d);
 
  printf("x = %ld y = %ld d = %ld\n", x, y, d);
 
  //return 0;
  getch();
}
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
27.10.2011, 09:30
DenProx, честно вчера завеялся и просто руки не дошли
0
27.10.2011, 11:04  [ТС]

Не по теме:

-=ЮрА=-, да не страшно) у самого еще дел образовалось кучу... тож пока не до задачки )

0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
22.11.2011, 11:03  [ТС]
Хотел бы поднять тему, т.к. решить так и не получилось пока что задачу, так чтобы ответы совпали с теми что приводятся в примере.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
22.11.2011, 13:11
Цитата Сообщение от DenProx Посмотреть сообщение
Хотел бы поднять тему, т.к. решить так и не получилось пока что задачу, так чтобы ответы совпали с теми что приводятся в примере.
- приношу извинения я тогда сделал, а разместить забыл, ниже мой взгляд на проблемму
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    long B, C, Z;
    cout<<"Z - vsego deneg v koshelke\n";
    cout<<"Z - B + C/100.0 deistvit stoimost pokypki\n";
    cout<<"Z - C + B/100.0 den'gi kotorie yplatil mister\n";
    cout<<"  Z   B   C\tZ - B + C/100.0\tZ - C + B/100.0\n";
    for(Z = 1; Z < 100 ; Z++)
    for(B = 1; B < 100 ; B++)
    for(C = 1; C < 100 ; C++)
    {
        if((Z - B + C/100.0) == (Z - C + B/100.0)*2)
        if(100*Z == 199*C - 98*B)
        {
            cout<<setw(3)<<Z<<" "
                <<setw(3)<<B<<" "
                <<setw(3)<<C<<"\t"
                <<setw(8)<<Z - B + C/100.0<<"\t"
                <<setw(8)<<Z - C + B/100.0<<endl;
        }
    }
    system("pause");
    return 0;
}
Вывод в консоль на миниатюре
Миниатюры
Задачка для мозга  
1
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
22.11.2011, 13:16  [ТС]
-=ЮрА=-, Спасибо) Можете немного объяснить, что выводится?) ответ к которому я стремился :
Х = 31, У = 63. По какому условию можно выбрать эти значения из данных чисел?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
22.11.2011, 13:27
Цитата Сообщение от DenProx Посмотреть сообщение
-=ЮрА=-, Спасибо) Можете немного объяснить, что выводится?) ответ к которому я стремился : Х = 31, У = 63. По какому условию можно выбрать эти значения из данных чисел?
возвращаюсь ко 2-му посту
Итоговая система:
А - А1 = В + С/100 - С - В/100

Не по теме:

(я в формуле накосил когда скобки раскрыл было В + С/100 - С + В/100)


(Z - A)*2 = (Z - A1)
Раскрыв скобки получим
Z = 2*A - A1 {A = B + C/100; A1 = C + B/100}
Z = 2*B + (2/100)*C - C - B/100
100*Z = 199*B - 98*C

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
(Z - A)*2 = (Z - A1)
if((Z - B + C/100.0) == (Z - C + B/100.0)*2)
1
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
22.11.2011, 13:32  [ТС]
-=ЮрА=-, Спасибо)) Уже понял))

кст, вот еще один вариант решения:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
main()
{
     int x,y,i;
     for(x=1;x<100;x++)
     {
          for(y=1;y<100;y++)
          {
               if(x==((199*y-5)/98))
               {
                    cout << "x: " << x << " " << "y: " << y << endl;
                    i++;
               }
          }
     }
     cout << i;
     system("pause");
}
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
22.11.2011, 13:38
DenProx, предостерегаю Вас, здесь кроется недочёт
Цитата Сообщение от DenProx Посмотреть сообщение
if(x==((199*y-5)/98))
Типы переменных int делите на int Вы можете 2/3 и получить нолик, я недаром писал
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
B/100.0
- эти неявно к даблу преобразовывал, вот. Будьте внимательны при делении, я сам много раз обжигался
1
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
22.11.2011, 13:44  [ТС]
-=ЮрА=-, спасибо!)) Учту на будущее
0
22.11.2011, 13:45

Не по теме:

PS:Мне не очень понятно откуда появилось 5:scratch:

Цитата Сообщение от DenProx Посмотреть сообщение
if(x==((199*y-5)/98))

0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
22.11.2011, 13:46  [ТС]
-=ЮрА=-, исходное уравнение задачи: 98х-199у=5 (5 центов)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.11.2011, 13:46
Помогаю со студенческими работами здесь

Задачка для реализации в С++
Производится стрельба двумя снарядами по k бакам с го- рючим (k&gt;2), расположенным рядом друг с другом в одну ли- нию. Каждый снаряд...

задачка для зачета
Движение закрашенного круга по синусоиде из левого нижнего угла экрана в правый верхний угол.

Задачка от Страуструпа для новичков
Вот задачка от Страуструпа для новичков char* cat(const char* str_1, const char* str_2) { int len_1 = strlen(str_1), ...

Очень простая задачка (но не для меня)
Привет, помогите плиз. У меня одностраничник, при заходе на него с ПК устройства, сайт почему автоматически перебрасывает вконец...

Сложноватая задачка для нахождения интеграла
Нам задали задание, но я плохо понял что и как надо делать нужно использовать метод Эйлера для интегралов вот прилагаю фото Как все это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru