#include <iostream>
#include <vector>
#include <set>
#include <cmath>
using namespace std;
bool check(double a, double b, double c){
return !(a >= b + c || b >= a + c || c >= b + c);
}
double square(double a, double b, double c){
double p = (a+b+c)/2;
return sqrt(p * (p-a) * (p-b) * (p-c));
bool is_palind(int k){
string s = to_string(k);
for(int i = 0; i < s.length() - i - 1; i++)
if(s[i] != s[s.length()-i-1])
return false;
return true;
void solve1(){
vector<double> lines(4);
double ans = -1;
for(auto &i : lines) cin >> i;
for(int i = 0; i < 4; i++)
for(int j = i + 1; j < 4; j++)
for(int k = j + 1; j < 4; j++)
if(check(lines[i],lines[j],lines[k]))
ans = max(ans,square(lines[i],lines[j], lines[k]));
ans == -1 ? cout << "No solution" : cout << ans;
void solve2(){
set<int> s;
for(int i = 1000; i < 10000; i++)
if(is_palind(i))
s.insert(i);
int n;
cin >> n;
s.find(n) != s.end() ? cout << n : cout << *upper_bound(s.begin(),s.end(),n);
Задача полностью
Категория Количество сайтов
сканер 200
принтер 250
монитор 450
Сколько сайтов будет найдено по запросу
принтер | сканер | монитор
если по запросу принтер | сканер было найдено 450 сайтов, по запросу принтер & монитор – 40, а по запросу сканер & монитор – 50.
Решение
Сканер - С =200
Принтер - П =250
Монитор - М =450
П | С=450
П & М=40
С & М=50
П | С | М-?
Формула включений-исключений
П | С | М = П + С + М - (П & М) - (П & С) - (С&M) + (П & С & М)
П | С = П + С - П & С => П & С = П | С - П - С = 450 - 200 - 250 = 0 (не пересекаются)
Значит П & С & М = 0 аналогично
П | С | М = П + С + М - (П & М) - (П & С) - (С&M) + (П & С & М) = 250+200+450-40-0-50+0 = 810
ответ 810
#include <iostream>
#include <vector>
#include <set>
#include <cmath>
using namespace std;
bool check(double a, double b, double c){
return !(a >= b + c || b >= a + c || c >= b + c);
}
double square(double a, double b, double c){
double p = (a+b+c)/2;
return sqrt(p * (p-a) * (p-b) * (p-c));
}
bool is_palind(int k){
string s = to_string(k);
for(int i = 0; i < s.length() - i - 1; i++)
if(s[i] != s[s.length()-i-1])
return false;
return true;
}
void solve1(){
vector<double> lines(4);
double ans = -1;
for(auto &i : lines) cin >> i;
for(int i = 0; i < 4; i++)
for(int j = i + 1; j < 4; j++)
for(int k = j + 1; j < 4; j++)
if(check(lines[i],lines[j],lines[k]))
ans = max(ans,square(lines[i],lines[j], lines[k]));
ans == -1 ? cout << "No solution" : cout << ans;
}
void solve2(){
set<int> s;
for(int i = 1000; i < 10000; i++)
if(is_palind(i))
s.insert(i);
int n;
cin >> n;
s.find(n) != s.end() ? cout << n : cout << *upper_bound(s.begin(),s.end(),n);
}
Задача полностью
Категория Количество сайтов
сканер 200
принтер 250
монитор 450
Сколько сайтов будет найдено по запросу
принтер | сканер | монитор
если по запросу принтер | сканер было найдено 450 сайтов, по запросу принтер & монитор – 40, а по запросу сканер & монитор – 50.
Решение
Сканер - С =200
Принтер - П =250
Монитор - М =450
П | С=450
П & М=40
С & М=50
П | С | М-?
Формула включений-исключений
П | С | М = П + С + М - (П & М) - (П & С) - (С&M) + (П & С & М)
П | С = П + С - П & С => П & С = П | С - П - С = 450 - 200 - 250 = 0 (не пересекаются)
Значит П & С & М = 0 аналогично
П | С | М = П + С + М - (П & М) - (П & С) - (С&M) + (П & С & М) = 250+200+450-40-0-50+0 = 810
ответ 810