玄关求助
  • 板块灌水区
  • 楼主zyt__dp
  • 当前回复8
  • 已保存回复8
  • 发布时间2024/11/13 19:52
  • 上次更新2024/11/13 21:46:23
查看原帖
玄关求助
1378812
zyt__dp楼主2024/11/13 19:52

为什么我的二进制枚举样例过不去

怎么也看不出错误

#include<bits/stdc++.h>
namespace OIFast {
	inline int read() {
		int x=0,f=1;
		char c=getchar();
		while(!isdigit(c)) { if(c=='-') f=-1; c=getchar();}	
		while(isdigit(c)) { x=(x<<1)+(x<<3)+(c^48); c=getchar();}
		return x*f;
	};
	
	inline void write(int x) {
		if(x<0) putchar('-'),x=-x;
		if(x>9) write(x/10);
		putchar((x%10)+'0');	
	};
};
using namespace OIFast;
using namespace std;
constexpr int N=1e5+7;
int a[N],cnt[N],b[N];
void solve() {
	int n,k;
    n=read(),k=read();
    int x=0;
    for(int i=0;i<n;i++) a[i]=pow(7,i);
    for(int i=0;i<(1<<n);i++) {
        int sum=0;
        for(int j=0;j<n;j++) {
        	if((i>>j)&1) {
                sum+=a[j];
            }   
		}
        if(cnt[sum]==0&&sum!=0) {
            cnt[sum]=1;
            b[++x]=sum;
		}
    }
   	sort(b+1,b+x+1);
   	cout<<b[k];
	return ;
}
int main() {
	//freopen("r","202409C.in",stdin);
	//freopen("w","202409C.out",stdout);
	int _=1;
	//cin>>_;
	while(_--) {
		solve();
	}
	return 0;
}

2024/11/13 19:52
加载中...