Простая задача В этой задаче не будет длинного условия и простого решения. Все будет наоборот. Требуется провести непрерывную линию произвольного вида из точки с координатами (x_1,y_1)(x
1
,y
1
) в точку с координатами (x_2,y_2)(x
2
,y
2
) так, чтобы минимизировать количество точек на этой линии, в которых хотя бы одна координата является целым числом. ответом к задаче будет являться количество таких точек. Если начальная или конечная точка линии будет иметь хотя бы одну целочисленную координату, то ее тоже надо учитывать.
Формат входных данных
Каждый тест в этой задаче будет содержать nn запросов. 1\leq n\leq 1001≤n≤100. Натуральное число nn будет записано в первой строке. Далее в nn строках записаны запросы. Каждый запрос располагается в отдельной строке и состоит из четырех чисел x_1x
1
, y_1y
1
, x_2x
2
, y_2y
2
, которые задают координаты двух точек. Точки не совпадают. Координаты могут быть целыми или вещественными числами не более чем с 2 знаками после точки. Координаты не превосходят 10^910
9
по абсолютной величине. Если координата является целым числом, то ее запись не содержит десятичной точки.
Формат выходных данных
Требуется вывести ответы на запросы по одному ответу в каждой строке.
Методика проверки и пояснение к тесту
Программа проверяется на 10 тестах. Прохождение каждого теста оценивается в Тест из условия задачи при проверке не используется.
Следующие рисунки поясняют ответ к тесту. Обратите внимание, что никакой фрагмент линии не может лежать на сетке, так как в этом случае количество точек с целочисленной координатой будет бесконечно большим.
Sample Input:
2
-2 -0.5 0.5 1.5
0 -2 0 2
Sample Output:
3
5
Ответы на вопрос:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{ int n, ry, rx;
double x1, x2, y1,y2 ;
cin >> n;
int ans[n];
for(int i = 0; i<n; i++)
{cin >> x1>> y1>> x2>>y2;
ry = y2 - y1;
rx = x2 - x1;
if (abs(ry) > abs(rx))
ans[i] = abs(ry) +1 ;
else
ans[i] = abs(rx) + 1;
}
for (int i = 0; i <n; i++)
cout << ans[i]<<endl;
return 0;
}
Объяснение:
с++
from math import ceil
num = int(input())
points =[list(map(float, input().split())) for _ in range(num)]
for p in points:
if abs(p[0] - p[2]) > abs(p[1] - p[3]):
a, b = p[0], p[2]
else:
a, b = p[1], p[3]
r = ceil(abs(b - a))
if abs(b - a) == r:
r += 1
print(r)
Объяснение:
Питон
a = int(input())
b = int(input())
n = int(input())
k = b * n
r = a * n + k // 100
k = k % 100
print(a, b)
Пояснение:
Вводим стоимость, вводим кол-во.
Копейки умножаем на кол-во, получим кол-во копеек, потраченных на n пакетов. Умножаем рубли на кол-во пакетов и добавляем столько рублей, сколько можно взять из общего числа копеек. Затем находим остаток от деления копеек на 100, ведь добавляя по 100 копеек как 1 рубль к числу рублей, мы эти копейки уже считали.
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
Владислава300007.04.2020 07:34
-
18larina1825.11.2020 10:40
-
fbnjvtlchenko15.01.2020 05:33
-
Гововрв17.03.2022 14:08
-
MCЯнуля17.03.2023 12:47
-
гилеваКсения01.10.2022 22:42
-
Katushka12312320.05.2023 01:48
-
coolflex28.03.2020 09:57
-
azamatmarahimov21.07.2022 01:27
-
Баумгертнер23.11.2021 11:55
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.