Катя нарисовала на клетчатой бумаге прямоугольник по линиям сетки. После этого она подсчитала количество узлов сетки, оказавшихся строго внутри прямоугольника и количество единичных отрезков сетки строго внутри прямоугольника и сообщила эти два числа Маше. Напишите программу, которая Маше определить длины сторон прямоугольника.
Входные данные
Во входном файле INPUT.TXT записаны два целых неотрицательных числа K и L – количество узлов и единичных отрезков сетки соответственно. Оба числа не превосходят 109.
Выходные данные
В выходной файл OUTPUT.TXT выведите два натуральных числа – длины сторон прямоугольника в любом порядке. Если ответов несколько, выведите любой из них. Гарантируется, что ответ всегда существует.
Примеры
№
INPUT.TXT
OUTPUT.TXT
Пояснение
1
2 7
2 3
2
1 4
2 2
Система оценки
Решения, работающие только для K,L ≤ 103, будут оцениваться в
Решения, работающие только для K,L ≤ 106, будут оцениваться в
сейчас скину код работы(просто в консоль напиши) :
C#
int[] a = new int[12];
int imax = 0, max = 0, i = 0;
for (i = 0; i < 12; i++)
{
Console.WriteLine(" Введите {0}-й элемент массива", i + 1);
a[i] = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine();
Console.WriteLine(" Исходный массив:");
for (i = 0; i < a.GetLength(0); i++)
{
if (a[i] >= max)
{
max = a[i];
imax = i;
}
Console.Write(a[i] + " ");
}
int temp = a[4];
a[4] = a[imax];
a[imax] = temp;
Console.WriteLine();
Console.WriteLine();
Console.WriteLine(" Массив после замены первого и максимального элемента:");
for (i = 0; i < a.GetLength(0); i++)
{
Console.Write(a[i] + " ");
}
Console.WriteLine();
Console.ReadKey();
day=0
p=N
v=1
поки p>0
пц
p=p-v
v=v*2
day= day+1
кц
Програма матиме вигляд:
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
int N, day, p, v;
cin>>N;
day=0;
p=N;
v=1;
while (p>0)
{
p=p-v;
v=v*2;
day++;
}
cout<<day;
return 0;
}
Таблиця виконання алгоритму
Объяснение: