Так как тут мизерные ограничения, то для решения конкретно этой задачи можно просто проифать : если n == 5 || n == 125 , то YES , иначе NO
НО мы же не пальцем деланные, да? Поэтому решим задачку и для больших N, с асимптотикой log2(N), используя бинпоиск :
#include < iostream >
#include < cmath >
using namespace std;
bool check(int n){
int l = 0, r = 15;
while(l <= r){
int m = (l + r)/2;
if(pow(5,m) < n)
l = m + 1;
else if(pow(5,m) > n)
r = m - 1;
else
return true;
}
return false;
signed main() {
int N;
cin >> N;
check(N) ? cout << "YES" : cout << "NO";
#include <iostream>
#include <vector>
int main()
{
int min = 999999;
vector<int> arr;
while (1) {
int temp;
cin >> temp;
if (temp == -1) {
break;
else {
arr.push_back(temp);
if (temp < min) {
min = temp;
cout << "k: ";
int k;
cin >> k;
arr[k] = min;
for (int i = 0; i < arr.size(); ++i) {
cout << arr[i] << " ";
Так как тут мизерные ограничения, то для решения конкретно этой задачи можно просто проифать : если n == 5 || n == 125 , то YES , иначе NO
НО мы же не пальцем деланные, да? Поэтому решим задачку и для больших N, с асимптотикой log2(N), используя бинпоиск :
#include < iostream >
#include < cmath >
using namespace std;
bool check(int n){
int l = 0, r = 15;
while(l <= r){
int m = (l + r)/2;
if(pow(5,m) < n)
l = m + 1;
else if(pow(5,m) > n)
r = m - 1;
else
return true;
}
return false;
}
signed main() {
int N;
cin >> N;
check(N) ? cout << "YES" : cout << "NO";
}
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int min = 999999;
vector<int> arr;
while (1) {
int temp;
cin >> temp;
if (temp == -1) {
break;
}
else {
arr.push_back(temp);
}
if (temp < min) {
min = temp;
}
}
cout << "k: ";
int k;
cin >> k;
arr[k] = min;
for (int i = 0; i < arr.size(); ++i) {
cout << arr[i] << " ";
}
}