思路
最小就是达到下限之后其他全是1 , 最大就是达到上限后全是最大的那个
代码
#include <bits/stdc++.h> using namespace std ; int n , l , r ; int minn = 1, maxx = 1; int main () { cin >> n >> l >> r ; for(int i = 1 ; i < l ; i ++) { minn *=2 ; } int rest = 1 , ans = 0 , tim = 1 ; for(int i = 1 ; i < l ; i ++) { ans += tim*2*i ; } int i = 0 ;ans = 0 ; for(int i = 1 ; i <= n ; i ++) { if(i <= l) { // cout << rest<< " " ; ans += rest ; // cout << ans<<"*" ; rest *= 2 ; }else { // cout << "1 " ; ans += 1 ; } } cout << ans << " " ; ans = 0 , rest = 1 ; i = 0 ; for(int i = 1 ; i <= n ; i ++) { if(i < r) { ans += rest ; rest *= 2 ; }else { ans += rest ; } } cout << ans << endl ; return 0 ; }