Последовательность 1, 0, 0, 1, 0, 1,
1, 0, 0, 1, 1, 0, …, состоящая из нулей и единиц строится так: первый ее
элемент равен 1, а остальные получаются из предшествующих с помощью логической
операции отрицания: not(1)
= 0, not (0) = 1. Второй
элемент равен отрицанию первого, третий и четвертый – отрицанию первого и
второго соответственно и т.д. По заданному n вычислить n-ый член указанной последовательности.
#include <iostream>
using namespace std;
int step(int x) //Если 0 или 2^n, то --. результат не может быть 0, 1, 2, 4 и т.д.
{
x--;
while (!(x & (x - 1)))
x--;
return x;
}
int main(void)
{
int n;
cout<<"CHISLO : ";
cin >> n;
if (n == 1)
cout << 1;
else if (n == 2)
cout << 0;
else
{
int k = 0;
while(n > 2)
{
n -= step(n);
k++;
}
if (((n == 1) && (k % 2 != 0)) || ((n == 2) && (k % 2 == 0)))
cout << 1;
else
cout << 0;
}
return 0;
}
#include <iostream>
using namespace std;
int step(int x) //Если 0 или 2^n, то --. результат не может быть 0, 1, 2, 4 и т.д.
{
x--;
while (!(x & (x - 1)))
x--;
return x;
}
int main(void)
{
int n;
cout<<"CHISLO : ";
cin >> n;
if (n == 1)
cout << 1;
else if (n == 2)
cout << 0;
else
{
int k = 0;
while(n > 2)
{
n -= step(n);
k++;
}
if (((n == 1) && (k % 2 != 0)) || ((n == 2) && (k % 2 == 0)))
cout << 1;
else
cout << 0;
}
return 0;
}
Комментариев нет:
Отправить комментарий