1111... | = | 2^n-1 |
---|---|---|
长度为n的都是1的二进制数 | = | 2的n次方-1 |
思路:对于每个数只有选或不选(1或0)的二进制,剩余见代码
点击查看代码
#include<bits/stdc++.h>
using namespace std;
long long f[20];
int main(){freopen("202409C.in","r",stdin);freopen("202409C.out","w",stdout);long long n,m;cin>>n>>m;f[0]=1;for(long long i=1;i<n;i++){f[i]=f[i-1]*7;//预处理}long long cnt=pow(2,n)-m;//一个观点:pow(2,n)-m表示一个长度为n的二进制数的第m大long long ans=0;for(int i=0;i<n;i++){ans+=((cnt>>i)&1)*f[i];//将二进制中为1的对应数相加}cout<<ans;return 0;
}