Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include <random>
- int uniform_random(int min,int max)
- {
- static std::mt19937 prng(std::random_device{}());
- return std::uniform_int_distribution<>(min,max)(prng);
- }
- int abs(int number)
- {
- if(number<0)
- number *=-1;
- return number;
- }
- int stepen(int a, int n)
- {
- int ret(1);
- for(int i(0);i<n;i++)
- ret *=a;
- return ret;
- }
- int Dogadka(int input[],int log[],int N,int R)
- {
- int situation(0);
- int sign;
- for( int i(1);i<N+1;i++)
- situation +=stepen(((input[i])*2),(N+1-i));
- if (input[3]==1)
- sign =100;
- else
- sign =-100;
- int flag(0);
- for(int j(0);j<R;j++)
- {
- if((abs(log[j]))%100 == situation)
- flag=j;
- }
- if (flag!=0)
- {
- if ((log[flag])/100>0)
- return 1;
- if ((log[flag])/100<0)
- return 0;
- if ((log[flag])/100==0)
- return uniform_random(0,1);
- }
- else
- {
- for (int i(R-1); i>0;i--)
- log[i]=log[i-1];
- log[1]=situation;
- log[2]+=sign;
- }
- }
- int main()
- {
- const int R(33);
- const int Z(6);
- int log[R];
- int input[Z];
- int N;
- int k(0);
- std::cout << "Enter N in [1;5] \n";
- if(!(std::cin >> N)||(N>5)||(N<1))
- return 0;
- std::cout <<"Enter 0 or 1 \n" ;
- for (int i(0);(std::cin>>input[i])&&(input[i]<=1)&&(input[i]>=0);k++)
- {
- std::cout <<"Enter 0 or 1 \n";
- for (int i(Z); i>0;i--)
- input[i]=input[i-1];
- if (k<N)
- {
- if (input[1]!=uniform_random(0,1))
- std::cout <<"You won! \n";
- else
- std::cout <<"You lose! \n";
- }
- else
- {
- if (input[1] != Dogadka(input,log,N,R))
- std::cout <<"You won! \n";
- else
- std::cout <<"You lose! \n";
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement