Câu 1:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
int a[n];
for (int i = 0;i < n;i++)
cin >> a[i];
sort(a,a+n);
int mmax = 0;
for (int i = 0;i < n;i++)
{
if (n-i-1 >= a[i])
mmax = a[i];
}
cout << mmax;
}
Câu 2:
#include <iostream>
using namespace std;
#define sqr(x) x*x
typedef long long ll;
bool prime(int n)
{
if (n < 2) return 0;
if (n < 4) return 1;
if (n%2 == 0|n%3 == 0) return 0;
for (int i = 5;i*i <= n;i += 6)
if (n%i == 0|n%(i+2) == 0)
return 0;
return 1;
}
int main()
{
ll n;
cin >> n;
ll mmax = 0;
ll a,b,c;
a = b = 1;
c = 2;
while (c <= n)
{
mmax = ((prime(c))?c:mmax);
a = b;
b = c;
c = a + b;
}
cout << mmax;
}
Câu 3:
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
ll f[50];
int d = 2,k;
ll n;
void fibo()
{
f[1] = 1;f[2] = 1;
while (f[d] <= n)
f[++d] = f[d-1] + f[d-2];
}
int bs(ll a[],int l,int r,ll val)
{
int t = r;
int i = (l+r)/2;
while (i != l && i != r)
{
if (val < a[i]) r = i;
else l = i;
i = (l+r)/2;
}
for (int i = l;i <= r;i++)
if (a[i] > val)
return i-1;
return t;
}
int main()
{
cin >> n;
fibo();
while (n != 0)
{
int p = bs(f,1,d,n);
n -= f[p];
k++;
}
cout << k;
}