Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.80 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. int m, n, s, k,l;
  8. bool *coins; // true - avers, false - revers
  9. bool *initCoins;
  10. void CreateCoins()
  11. {
  12.     coins = new bool[m+n];
  13.     initCoins = new bool[m+n];
  14. }
  15. void DeleteCoins()
  16. {
  17.     delete coins;
  18.     delete initCoins;
  19. }
  20. int TestPrint(bool print)
  21. {
  22.     int avers = 0;
  23.     for( int i = 0; i < m+n; avers+=coins[i]?1:0,i++)
  24.     {
  25.         if(print)
  26.          cout << coins[i]<<" ";
  27.     }
  28.     if(print)
  29.         cout << " avers: " << avers << endl;
  30.     return avers;
  31. }
  32.  
  33. void FillCoins()
  34. {
  35.     for( int i = 0; i < m; i++)
  36.         initCoins[i] = true;
  37.     for( int i = m; i < m+n; i++)
  38.         initCoins[i] = false;
  39. }
  40. bool turnCoins()
  41. {
  42.     if(coins[0] == false )
  43.         return false;
  44.     for( int i=1,j; i<=k; i++ )
  45.     {
  46.         j=(s*i)%(m+n);
  47.         coins[j]=coins[j]?false:true;
  48.     }
  49.     return true;
  50. }
  51.  
  52. int main ()
  53. {
  54.   bool result = true;
  55.   cout<<"M= ";
  56.   cin>>m;
  57.   cout<<"N= ";
  58.   cin>>n;
  59.   cout<<"S= ";
  60.   cin>>s;
  61.   cout<<"K= ";
  62.   cin>>k;
  63.   cout<<"L= ";
  64.   cin>>l;
  65.   cout<<endl<<"true - avers, false - revers"<<endl<<endl;
  66.   CreateCoins();
  67.   FillCoins();
  68.   sort (initCoins,initCoins+m+n);
  69.   do
  70.   {
  71.       copy(initCoins,initCoins+n+m,coins);
  72.       if( turnCoins() == false )
  73.           continue;
  74.       if( l==TestPrint(true) )
  75.       {
  76.           copy(initCoins,initCoins+n+m,coins);
  77.           cout << endl;
  78.           break;
  79.       }
  80.   }
  81.   while ( result = next_permutation(initCoins,initCoins+m+n) );
  82.   if(result)
  83.   {
  84.       cout<<"Start positions: ";
  85.       TestPrint(true);
  86.       turnCoins();
  87.       cout<<"Final positions: " ;
  88.       TestPrint(true);
  89.       cout<< endl;
  90.   }
  91.   else cout << "there is no decision" << endl;
  92.   DeleteCoins();
  93.   system("pause");
  94.   return 0;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement