50 ! решите по программированию.
: одномерный японский кроссворд
не так давно петя узнал, что такое японский кроссворд. японский кроссворд — это изображение, представляемое таблицей размера a × b квадратных клеток, каждая из которых имеет либо белый, либо черный цвет. слева от строк и сверху от столбцов располагаются числа, которые шифруют данную строку или столбец. количество чисел показывает, сколько групп чёрных клеток находятся в соответствующей строке или столбце, а сами числа — сколько идущих подряд чёрных клеток содержит каждая из этих групп.
петя счел общий случай японского кроссворда слишком сложным и нарисовал строку из n клеток (то есть японский кроссворд размера 1 × n), которую он хочет зашифровать числами так же, как в японском кроссворде.
пример шифрования одной строки японского кроссворда.
петя найти числа, шифрующие нарисованную им строку кроссворда.
входные данные
в первой строке содержится целое положительное число n (1 ≤ n ≤ 100) — длина строки. во второй строке содержится строка, состоящая из n символов 'b' или 'w', ('b' соответствует черной клетке, 'w' — белой клетке в строке, нарисованной петей).
выходные данные
в первой строке должно содержаться целое неотрицательное число k — количество чисел, шифрующих строку, то есть количество групп черных клеток в строке.
во второй строке должно содержаться k целых чисел, шифрующих строку, то есть соответствующих размерам групп последовательных черных клеток в порядке слева направо.
пример:
ввод:
3
bbw
вывод:
1
2
p.s. если кому надо, то вот словесное описание решения, которое я не понимаю: в этой нужно посчитать длину каждого блока из подряд идущих чёрных клеток. делать это можно так: пройдёмся циклом с переменной i по нашей строке слева направо, если мы встретили чёрную клетку, то возьмём переменную j = i, и пока j < n и s[j] = 'b', мы прибавляем j. далее мы добавляем в ответ длину получившегося отрезка (она равна j - i), и переприсваеваем в i значение j. после того, как цикл по i закончит выполнение, можно выводить ответ.
асимптотика такого решения — o(n) времени и памяти.
напишите программу на языке pascalabc.net (желательно) или "c", максимально понятно и просто.
Средой передачи информации называются те линии связи (или каналы связи), по которым производится обмен информацией между компьютерами. В подавляющем большинстве компьютерных сетей (особенно локальных) используются проводные или кабельные каналы связи, хотя существуют и беспроводные сети, которые сейчас находят все более широкое применение, особенно в портативных компьютерах. Информация в локальных сетях чаще всего передается в последовательном коде, то есть бит за битом. Такая передача медленнее и сложнее, чем при использовании параллельного кода
Передача на большие расстояния при любом типе кабеля требует сложной передающей и приемной аппаратуры, так как при этом необходимо формировать мощный сигнал на передающем конце и детектировать слабый сигнал на приемном конце. При последовательной передаче для этого требуется всего один передатчик и один приемник. При параллельной же количество требуемых передатчиков и приемников возрастает пропорционально разрядности используемого параллельного кода. В связи с этим, даже если разрабатывается сеть незначительной длины (порядка десятка метров) чаще всего выбирают последовательную передачу.
31
Объяснение:
/** libraries */
#include <iostream>
#include <cmath>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <algorithm>
/** libraries */
using namespace std;
/** defines */
#define ll long long
#define ld long double
#define yes cout << "YES" << "\n"
#define no cout << "NO" << "\n"
/** defines */
ll to_10(ll num){
ll i = 0,res = 0;
while(num > 0){
res += pow(2,i) * (num % 10);
num /= 10;
i++;
}
return res;
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
for(ll x = -1000000; x <= 1000000; x++){
if(x - to_10(11110) > 0&&to_10(11) * to_10(1001) - sqrt((to_10(101011) + to_10(111001))/(x-to_10(11110))) == to_10(10001)){
cout << x;
return 0;
}
}
}