Задача 3: Игра На уроке информатики учитель предложил Васе сыграть в следующую игру.
На доске записаны по порядку все целые числа от 1 до N. За один ход можно стереть либо все числа, стоящие на чётных позициях, либо все числа, стоящие на нечётных позициях. После этого оставшиеся числа перенумеровываются заново слева направо; нумерация начинается с единицы.
Игра продолжается, пока на доске есть хотя бы два числа.
Вася выиграет, если после окончания игры единственным оставшимся на доске числом будет число X. Выведите последовательность ходов, которая приведёт к победе Васи. Гарантируется, что Вася всегда может победить.
Входные данные
В первой строке содержится целое число N (2 ≤ N ≤ 109) — начальное количество чисел на доске.
Во второй строке содержится целое число X (1 ≤ X ≤ N) — число, которое должно остаться в конце игры.
Выходные данные
Выведите последовательность целых чисел, состоящую из чисел 1 и 2 — ходов Васи. Число 1 означает, что Вася стирает все числа на нечётных позициях, число 2 — на чётных.
Каждый ход Васи выводите на отдельной строке.
ответ:
#include "stdafx.h"
#include
using namespace std;
struct complex // структура "хранения" комплексного числа
{ float re; // действительная часть
float im; // мнимая часть
};
void print( char * txt, complex x) // вывод комплексного числа
{
printf("%s=(%f,%fi)", txt, x.re, x.im);
return;
};
complex new_complex(float a, float b) // задать значение комплексному числу
{ complex temp;
temp.re=a;
temp.im=b;
return temp;
};
complex plus_complex(complex a, complex b) // сложить два комплексных чисел
{ complex temp;
temp.re=a.re+b.re;
temp.im=a.im+b.im;
return temp;
}
int main() // простая тестовая программа
{
complex z;
printf( "vvedite re и im 1 chisla: ");
cin > > z.re > > z.im;
print( "z", z); printf("\n");
complex q;
printf( "vvedite re и im 2 chisla: ");
cin > > q.re > > q.im;
print("q", q); printf("\n");
complex sum;
sum=plus_complex(z,q);
print("q+z", sum); printf("\n");
return 0;
}
0
только в сети с полносвязной топологией для соединения каждой пары компьютеров имеется отдельная линия связи. во всех остальных случаях возникает вопрос о том, как организовать совместное использование линий связи несколькими компьютерами.
в вычислительных сетях используют как индивидуальные линии связи между компьютерами, так и разделяемые, когда одна линия связи попеременно используется несколькими компьютерами.
существуют различные технологии организации сети:
ethernet – (эзернет) – это наиболее популярная сетевая технология, используемая для создания локальных сетей. основной принцип, положенный в основу – случайный метод доступа к разделяемой среде передачи данных. в качестве такой среды может использоваться коаксиальный кабель, витая пара, оптоволокно или радиоволны. топология электрических связей –общая шина.
суть метода случайного доступа в следующем – информацию компьютер вначале убеждается, что сеть свободна, потом передает информацию. ее принимают все другие компьютеры. если информация предназначена им (они анализируют адрес назначения), то они ее копируют.
главное достоинство сети ethernet – – достаточно иметь сетевые адаптеры на компьютерах и кусок коаксиального кабеля.
token ring – кольцевая сеть, каждый узел кольца ожидает прибытие пакета информации адресованного ему.
однако в последние годы наметилась тенденция отказа от разделяемых сред передачи данных. это связано с низкой производительностью таких сетей. компьютеры подключаются индивидуальными линиями связи к специальному устройству - коммутатору. следует подчеркнуть, что связи между компьютерами остаются разделяемыми.
в сетях отказ от разделяемых линий связи объясняется техническими причинами: компьютеры могут затратить больше времени на переговоры о том, кому сейчас можно использовать линии связи, чем непосредственно на передачу данных по линии связи.