CF1204B题解
思路
这题所要求的序列,一定包含(设不同的个数为 ):
证明很简单:
证明1
题目说:若 在序列中,则 也在序列中(要注意没有 )。
所以当序列最大正整数 ,那么这个序列就有 个不同的数;
接着我们来分析序列和的最大值和最小值怎么求。
显然,题目给的 就是当序列和最小是这个序列数不同的个数, 就是当序列和最大是这个序列数不同的个数.
所以我们先往和最小的序列里放上
我们为了和最小,所以会用 来填充剩余的部分。
答案就是:
再往和最大的序列里放上
我们为了和最大,所以会用 来填充剩余的部分。
答案就是:
代码
#include<bits/stdc++.h>
using namespace std;
int n,l,r,mi,ma;
int main(){
cin>>n>>l>>r;
cout<<(1<<l)+n-l-1<<' '<<(1<<r)-1+(n-r)*(1<<(r-1));
return 0;
}

浙公网安备 33010602011771号