Задача: Дан двумерный массив целых чисел. Вывести все строки, в которых есть трёхзначные натуральные числа.
Формат ввода:
На первой строке, заданы два натуральных числа, не превосходящие 50 - количество строк и столбцов соответственно.
Далее массив целых чисел задан построчно, через 1 пробел. Числа в диапазоне от -30000 до 30000
Формат вывода:
Выбранные строки массива, через 1 пробел.
Пример входных данных
4 3
13 24 35
163 671 28
12 -61 -50
-8 -6 100
Пример выходных данных
163 671 28
-8 -6 100
Пояснение:
Отсутствует.
#include <iostream>
#include <string>
bool is_palindrome(const std::string& s) {
std::string r(s);
std::reverse(r.begin(), r.end());
return s == r;
}
int main() {
std::string s1,s2;
setlocale(LC_ALL, "Russian");
std::cout << "Введите число 1: ";
std::getline(std::cin, s1);
std::cout << "Введите число 2: ";
std::getline(std::cin, s2);
if (is_palindrome(s1)|| is_palindrome(s2))
std::cout << "Одно из введенных чисел является палиндромом " << std::endl;
else
std::cout << "Ни одно из введенных чисел не является палиндромом " << std::endl;
return 0;
}
#include <iostream>
typedef long long ll;
using namespace std;
bool ll_is_valid(ll t, ll N, ll x, ll y)
{
return t / x + (t - x) / y >= N;
}
ll f(ll N, ll x, ll y)
{
ll R = 1;
while (!ll_is_valid(R,N,x,y)) R *= 2;
ll L = R / 2;
while(R - L > 1)
{
ll M = (L + R) / 2;
if (!ll_is_valid(M,N,x,y)) {L = M;}
else {R = M;}
}
return R;
}
int main()
{
ll N,x,y;
cin >> N >> x >> y;
if(x > y) swap( x, y );
cout << f(N, x, y) << std::endl;
}