Дано число n . Найдите максимальный размер интервала [l,r] из целых положительных чисел такого, что для каждого числа i из этого интервала (т.е. l≤i≤r ) n кратно i . Если вам даны два целых числа l≤r , то размер интервала [l,r] равен r−l+1 (т.е. совпадает с количеством целых чисел, принадлежащих интервалу). Входные данные Первая строка содержит единственное целое число t (1≤t≤104 ) — количество наборов входных данных. Единственная строка каждого набора входных данных содержит одно целое число n (1≤n≤1018 ). Выходные данные Для каждого набора входных данных вывести одно целое число: максимальный размер допустимого интервала.
Пример
входные данные
10
1
40
990990
4204474560
169958913706572972
365988220345828080
387701719537826430
620196883578129853
864802341280805662
1000000000000000000
выходные данные
1
2
3
6
4
22
3
1
2
2
Примечание В первом наборе входных данных допустимым интервалом с максимальным размером является [1,1] (он допустим, так как n=1 кратно 1 ) и его размер равен 1 . Во втором наборе входных данных допустимым интервалом с максимальным размером является [4,5] (он допустим, так как n=40 кратно 4 и 5 ), а его размер равен 2 . В третьем наборе входных данных допустимым интервалом с максимальным размером является [9,11] . В четвертом наборе входных данных допустимым интервалом с максимальным размером является [8,13] . В седьмом наборе входных данных допустимым интервалом с максимальным размером является [327869,327871]
C/C++
Решите задачу на с++. Просто кодом или письменно алгоритмом.
секрет в том, что для любого n один из оптимальных отрезков будет начинаться в единице, со знанием этого факта задача решается элементарно
доказательство оставляем читателю в качестве упражнения
доказательство оставляем читателю в качестве упражнения
Деня ///////////////
а что мне тогда, просто проверять 1, потом 2, потом 3 и так далее?
Деня ///////////////
да, ты надоел, у меня же прошло
Деня ///////////////
какой код?
Деня ///////////////
я кроме a и b , ничего не решил
Деня ///////////////
а должен?
Деня ///////////////
все 7?
Деня ///////////////
ну так решай, стань 2ым)
#include
#include
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
long long n;
cin >> n;
long long ans = 1;
for (long long i = 2; i * i
Деня ///////////////
А почему такой вывод странный?

Деня ///////////////
а сейчас фото ввода
Артём Ипатов
Полная чушь!
Алгоритм решения задачи:
1. Считываем количество наборов входных данных t.
2. Для каждого набора входных данных:
- Считываем число n.
- Инициализируем переменную maxSize = 0, которая будет хранить максимальный размер интервала.
- Инициализируем переменные l = 1 и r = n, которые будут хранить границы интервала.
- Пока l <= r:
- Если n кратно l и r:
- Вычисляем размер текущего интервала currSize = r - l + 1.
- Если currSize > maxSize, обновляем maxSize = currSize.
- Увеличиваем l на 1 и уменьшаем r на 1.
- Если n не кратно l, увеличиваем l на 1.
- Если n не кратно r, уменьшаем r на 1.
- Выводим maxSize.
Пример реализации на C++:
```cpp
#include <iostream>
using namespace std;
int main() {
int t;
cin >> t;
for (int i = 0; i < t; i++) {
long long n;
cin >> n;
int maxSize = 0;
long long l = 1, r = n;
while (l <= r) {
if (n % l == 0 && n % r == 0) {
int currSize = r - l + 1;
if (currSize > maxSize) {
maxSize = currSize;
}
l++;
r--;
} else if (n % l != 0) {
l++;
} else if (n % r != 0) {
r--;
}
}
cout << maxSize << endl;
}
return 0;
}
```
1. Считываем количество наборов входных данных t.
2. Для каждого набора входных данных:
- Считываем число n.
- Инициализируем переменную maxSize = 0, которая будет хранить максимальный размер интервала.
- Инициализируем переменные l = 1 и r = n, которые будут хранить границы интервала.
- Пока l <= r:
- Если n кратно l и r:
- Вычисляем размер текущего интервала currSize = r - l + 1.
- Если currSize > maxSize, обновляем maxSize = currSize.
- Увеличиваем l на 1 и уменьшаем r на 1.
- Если n не кратно l, увеличиваем l на 1.
- Если n не кратно r, уменьшаем r на 1.
- Выводим maxSize.
Пример реализации на C++:
```cpp
#include <iostream>
using namespace std;
int main() {
int t;
cin >> t;
for (int i = 0; i < t; i++) {
long long n;
cin >> n;
int maxSize = 0;
long long l = 1, r = n;
while (l <= r) {
if (n % l == 0 && n % r == 0) {
int currSize = r - l + 1;
if (currSize > maxSize) {
maxSize = currSize;
}
l++;
r--;
} else if (n % l != 0) {
l++;
} else if (n % r != 0) {
r--;
}
}
cout << maxSize << endl;
}
return 0;
}
```
Деня ///////////////
У вас неправильно выводит задача
#include
#define int long long
using namespace std;
void solve() {
int n; cin >> n;
int res = 1;
for (int i = 2; i
Деня ///////////////
я писал, что уже не надо
Деня ///////////////
ну так кто-нибудь скопирует, а потом его и группу тех кто скопировал забанят
Деня ///////////////
за списование
Деня ///////////////
списывание*
Похожие вопросы
- Можете пожалуйста решить ещё задачу на с++. Письменно алгоритмом или код на с++.
- Решите задачу на языке С++. Алгоритм проверки числа на простоту (переборный)
- Помогите решить задачу по программированию на C++
- Решите задачу на с++, или хотя бы скажите идею как это вообще решать пожалуйста.
- Решите задачу на любом языке, или хотя бы скажите идею как это вообще решать пожалуйста.
- Помогите решить задачу,код должен выйти не таким сложным,но что то не выходит
- Решите задачу на любом языке. Желательно на с++.
- Помогите решить задачу по C++!
- Помогите решить задачу по программированию
- Решить задачу на языке СИ