Автор задачі: | Mohammad Nasser (MOAGEZA) |
Підготовлено: | Mohammad Nasser (MOAGEZA) |
Відредаговано: | Hasan Saleh (MathModel) |
Розв'язок
Загальна ідея: Щоб найбільший спільний дільник сусідніх різниць був більший за , усі різниці повинні мати спільний дільник щонайменше .
Найпростішою стратегією є побудова перестановки, в якій числа з однаковою парністю згруповані разом. Наприклад:
У середині кожної групи парності кожна сусідня різниця є парною, тобто ділиться на . Тому найбільший спільний дільник цих різниць щонайменше .
Найдовша можлива підпослідовність, яку можемо таким чином сформувати, це просто розмір більшої групи за парністю.
— Кількість непарних чисел від до дорівнює .
— Кількість парних чисел дорівнює .
Таким чином, відповідь:
Розв'язання виконується за часу на кожен тестовий випадок.
#include <bits/stdc++.h>
using namespace std;
#define int long long
void solve(){
int n;
cin>>n;
cout<<(n+1)/2;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin>>t;
while(t--){
solve();
cout<<'\n';
}
}