这样可以吗?请帮忙看看

回复帖子

@int树先生 2020-01-14 22:32 回复

可能是溢出了

#include<iostream>
#include<string>
using namespace std;

string a;

void nia(int n,unsigned long long k){
    if(n<1)return;
    unsigned long long mid=(2<<(n-1))/2;
    if(k>mid){
        k=(2*mid)-k+1;
        a=a+"1";
    }
    else a=a+"0";
    nia(n-1,k);
    return;
}

int main()
{
    //ifstream fin("code.in");
    //ofstream fout("cout.out");
    int n;
    unsigned long long k;
    cin>>n>>k;
    k=k+1;
    nia(n,k);
    cout<<a;
    return 0;
}

只拿了70(原数据

@longer_name  2020-01-15 06:52 回复 举报

你mid为什么不写成

int mid = 1 << (n - 1);呢?

k++会薄ull(最后一个点)

反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。