大佬们抽空帮看看呗
  • 板块学术版
  • 楼主Master·ss
  • 当前回复6
  • 已保存回复6
  • 发布时间2020/5/29 12:57
  • 上次更新2023/11/7 01:32:03
查看原帖
大佬们抽空帮看看呗
221014
Master·ss楼主2020/5/29 12:57

P5657 格雷码 题目链接

#include <iostream>
#include <bits/stdc++.h>
#define int unsigned long long

using namespace std;
inline int read(){
    int x=0;
    char ch = getchar();
    while(ch<'0'||ch>'9')  {
        ch = getchar();
    }

    while(ch>='0'&&ch<='9') {
        x = (x << 1) + (x << 3) + (ch ^ '0');
        ch = getchar();
    }
    return x;
}
signed main(){
    int n;
    char a[1001]={0};
    int i=0,j=1,k;
    int p=0,flag=0;
    n=read(); 
    k=read();
    for (int i=1;i<=n;i++) {
        j *= 2;
    }
    j--;n--;
    int m=(i+j)>>1;
    int max=0-1;
    while(i<j&&n!=max){
        //cout<<m<<" "<<n<<" "<<i<<" "<<j<<endl; 
        if (m>=k) {
            a[p++]=flag+'0';
            j=m;
            flag=0;
            m-=pow(2,n-1);
            n--;
        } else {
            a[p++]=(1^flag)+'0';
            flag=1;
            i=m+1;
            m+=pow(2,n-1);
            n--;
        }
    }

    for (int i=0;i<p;i++) {
        cout<<a[i];
    } 
    return 0;
} 

为什么还会有数据过不了呢

2020/5/29 12:57
加载中...