B. Вычеркивание Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или crossout.in
Вывод стандартный вывод или crossout.out
В старшей группе детского сада "Звездочка" детей учат арифметике. Детям очень понравилось играть в такую игру: всем воспитанникам раздается по одной карточке. На всех карточках написано одно и то же натуральное число. Каждый ребенок вычеркивает на своей карточке ровно одну цифру. Раунд выигрывают те дети, которые справились с заданием в отведенное время, и у которых, при этом, на карточках получилось самое большое число. Напишите программу, определяющую самое большое число, которое ребенок мог получить в результате вычеркивания ровно одной цифры.
Формат ввода
На вход программе поступает натуральное число N, записанное на карточке. (99 < N < 109)
Формат вывода
Ваша программа должна вывести одно число - ответ к задаче.
Пример
Ввод Вывод
203
23
Сначала надо разделить IP на байты, по 8 бит:
1 )11001100.11100010.10100110.01101001
2) 11011001.10100001.01100011.00111010
Теперь переводим каждый байт в десятичную сс, получаем:
1) 204.226.166.105
2) 217.161.99.58
3, 4)
Переведем каждый байт в двоичную сс:
3) 10111100.1011.11000010.100000
4) 11110000.1111.0.10
Добавим незначащие нули, чтобы кол-во бит в каждом байте было равно восьми:
3) 10111100.00001011.11000010.00100000
4) 11110000.00001111.00000000.00000010
Уберем точки:
3) 10111100000010111100001000100000
4) 11110000000011110000000000000010
#include <cstring>
using namespace std;
int main() {
int n,m;
cin >> n >> m;
int a[n][m], sn[n], sm[m]; //sn - сумма строк, sm - сумма столбцов
memset(sn, 0, n*sizeof(int));
memset(sm, 0, m*sizeof(int));
for(int i = 0; i < n; i++)
for(int j = 0; j < m; sn[i]+= a[i][j], sm[j]+= a[i][j], j++)
cin >> a[i][j];
cout << endl;
for(int i = 0; i < n; i++) cout << sn[i] << ' ';
cout << endl << endl;
for(int i = 0; i < m; i++) cout << sm[i] << ' ';
cout << endl << endl;
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++)
cout << a[i][j] << ' ';
cout << endl;
}
}