Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
1

Задача про монеты

02.10.2016, 18:49. Просмотров 2392. Ответов 1
Метки нет (Все метки)


Привет. Задача:
Кликните здесь для просмотра всего текста
По кругу расположено N монет гербами вверх и M монет гербами вниз. Обходя круг по ходу часовой стрелки, переворачивает каждую S -тую монету. В первый раз счет начинается с герба. В каком порядке надо расставить монеты, чтобы после K ходов стало L монет, лежащих гербами вверх.

На вид легкая задача, но если вникать в суть, то не очень то и легкая. У кого какие идеи? Спасибо. Скоро скину свои наброски

Добавлено через 3 часа 50 минут
Кажется задача олимпиадная... Простые махинации не проходят
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.10.2016, 18:49
Ответы с готовыми решениями:

задача про монеты
на столе лежат n-1 монет.двое игроков по очереди берут по 1,3 или 5 момент за раз.выигрывает тот...

задача про монеты
Трое поочередно бросают монету. Выигрывает тот, у кого раньше появится герб. Определить вероятность...

Задача про взвешивание и определение фальшивой монеты
Задача :Имеется 2 золотых и 4 серебряных и 5 бронзовых монет , известно что 1 серебренная и 2...

Задача про монеты. Найти количество монет определенного номинала
Дана примерно такая задача : Есть монеты определенного номинала ( 5копеек,10копеек,50копеек)...

__________________
Помогаю в написании студенческих работ здесь.
Записывайтесь на профессиональные курсы C++ разработчиков
1
78 / 78 / 34
Регистрация: 26.10.2011
Сообщений: 220
02.10.2016, 20:13 2
Лучший ответ Сообщение было отмечено Aymurat как решение

Решение

Aymurat,
Вот решение в лоб, можно использовать для проверки более оптимальных алгоритмов:
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <stdlib.h>
#include <iostream>     
#include <algorithm>    
 
using namespace std;
 
int m, // initial number of coats
    n, // initial number of tails
    s, // position of turn
    k, // number of turns
    l; // final number of coats
 
bool *coins; // true - coat, false - tail
bool *init_coins;
 
void create_coins()
{
    coins = new bool[m+n];
    init_coins = new bool[m+n];
}
 
void delete_coins()
{
    delete coins;
    delete init_coins;
}
 
int test_and_print_print_coins(bool print)
{
    int coats = 0;
    for( int i = 0; i < m+n; coats+=coins[i]?1:0,i++)
        if(print) cout << coins[i];     
    if(print) cout << " coats: " << coats << std::endl;
    return coats;
}
 
void fill_coins()
{
    for( int i = 0; i < m; i++) init_coins[i] = true;
    for( int i = m; i < m+n; i++) init_coins[i] = false;    
}
 
bool turn_coins()
{
    if(coins[0] == false ) return false;
 
    for( int i=1,j; i<=k; i++ ) 
    {    
        j=(s*i)%(m+n);
        coins[j]=coins[j]?false:true;
    }       
    return true;
}
 
int main () 
{
  bool result = true;
 
  m=4,n=5,s=2,k=4,l=2;
  cout << "m(initial coats)=" << m;
  cout << "n(tails)=" << n; 
  cout << "s(position)=" << s; 
  cout << "k(turns)=" << k; 
  cout << "l(final coats)=" << l << endl;
 
  create_coins();
  fill_coins();
  sort (init_coins,init_coins+m+n);
  
  do
  {  
      copy(init_coins,init_coins+n+m,coins);
      if( turn_coins() == false ) continue;
      if( l==test_and_print_print_coins(true) )
      {
          copy(init_coins,init_coins+n+m,coins);
          cout << std::endl;
          break;  
      }
  } 
  while ( result = std::next_permutation(init_coins,init_coins+m+n) );
 
  if(result)
  {
      test_and_print_print_coins(true);
      turn_coins();
      test_and_print_print_coins(true);
  }
  else cout << "there is no decision" << std::endl;
 
  delete_coins();
 
  system("pause");
  return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2016, 20:13

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Задачка про монеты
Если монета легче или тяжелее настоящей, то она фальшивая. Определить среди трех монет есть ли...

Задачка про монеты в кармане
в правом кармане 4 монеты по 20 копеек и 3 по 3 копейки, а в левом 6 по 20 копеек и 3 по 3 копейки....

Загадка про фальшивые монеты
В общем классическая задача про фальшивые монеты. Перед вами лежат 10 открытых мешков с монетами в...

Нужно разобраться с программой по динамическому программированиию про кузнечика и монеты
Помогите пожалуйста разобраться. Задание: Ограничение по времени, сек 2 Ограничение по памяти,...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.