5041. 函数
已知,
给定一个整数 n,请你计算并输出 f(n) 的值。
输入格式
一个整数 n。
输出格式
一个整数,表示 f(n) 的值。
数据范围
所有测试点满足 。
输入样例1:
4
输出样例1:
4
输入样例2:
1
输出样例2:
0
解题思路
这道题很简单,直接根据题目意思先判断及奇数偶数,再输出即可。
AC代码
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
if(n%2!=0) cout<<0;
else
{
int m = n / 2;
long long res = 1;
for(int i=0;i<m;i++)
{
res *= 2;
}
cout<<res;
}
return 0;
}
5039. 构造数组
给定一个长度为 n 的正整数数组 a1,a2,…,an。
请你构造一个正整数数组b1,b2,…,bn,要求:
- 对于 均成立。
- 在满足上一要求的前提下,令 Mex(b) 尽可能大。 Mex(b) 指未在数组 b 中出现过的最小正整数。
请你计算并输出,Mex(b) 的最大可能值。
输入格式
第一行包含整数 n。
第二行包含 n 个整数 a1,a2,…,an。
输出格式
一个整数,表示 Mex(b) 的最大可能值。
数据范围
前 4 个测试点满足 。
所有测试点满足 。
输入样例1:
5
1 3 3 3 6
输出样例1:
5
输入样例2:
2
2 1
输出样例2:
3
解题思路
这是一道贪心题,其实很简单,他要让b数组中的未出现的最小正整数尽可能大,我们只需要满足a[i]>=b[i]的前提下,让b[i]尽可能小,再求出b的最大值,然后输出最大值+1就是最后的答案。
注意:这里并不需要真的开一个数组b,用res记录b数组的最大值即可,当res<a[i]时,res要加1,更新最大值。
AC代码
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 100005;
int a[N];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
int res = 0;
for(int i=0;i<n;i++)
{
if(res<a[i])
{
res++;
}
}
cout<<res + 1;
return 0;
}