一个蒟蒻的提问
  • 板块题目总版
  • 楼主Cattage
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/4 15:48
  • 上次更新2024/10/4 15:48:21
查看原帖
一个蒟蒻的提问
1489668
Cattage楼主2024/10/4 15:48

求各位大神帮忙看一下

为什么最后一个数据过不去

谢谢!!!

P5657 [CSP-S2019] 格雷码

#include<bits/stdc++.h>
#define ull unsigned long long 
ull a[67]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,262144,524288,1048576,2097152,4194304,8388608,16777216,33554432,67108864,134217728,268435456,536870912,1073741824,2147483648,4294967296,8589934592,17179869184,34359738368,68719476736,137438953472,274877906944,549755813888,1099511627776,2199023255552,4398046511104,8796093022208,17592186044416,35184372088832,70368744177664,140737488355328,281474976710656,562949953421312,1125899906842624,2251799813685248,4503599627370496,9007199254740992,18014398509481984,36028797018963968,72057594037927936,144115188075855872,288230376151711744,576460752303423488,1152921504606846976,2305843009213693952,4611686018427387904,9223372036854775808};
using namespace std;
int main(){
	//freopen("P5657_20.txt","r",stdin);
	//freopen("out.txt","w",stdout);
	ull n,k;
	cin>>n>>k;
	ull s;
	if(n==64){
	    cout<<'1';
	    k=2*s-k+1;
	    n--;
	}
	s=a[n-1];k+=1;
	while(s>0){
		if(k>s){
			cout<<'1';
			k=2*s-k+1;
		}
		else {
			cout<<'0';
			
		}s=s/2;
	}
	return 0;
} 
2024/10/4 15:48
加载中...