有关卡数据的问题

P5657 [CSP-S2019] 格雷码

@[zhanghengrui](/user/110634) ```cpp #include <bits/stdc++.h> using namespace std; #define ll unsigned long long ll pow(ll x){ return (1 << x); /*这里改成快速幂或者龟速幂就可以过,但是直接位移就凉*/ } ll a[10000], cnt = 0; void dfs(ll n, ll k){ if(n == 1){ if(k == 1) a[++cnt] = 1; else a[++cnt] = 0; return ; } if(k >= (pow(n) / 2) ) dfs(n - 1, (pow(n) - k - 1)); else dfs(n - 1, k); if(k >= pow(n) / 2) a[++cnt] = 1; else a[++cnt] = 0; return ; } int main(){ // freopen("hh.txt", "r", stdin); ll n, k; cin >> n >> k; dfs(n, k); for(int i = cnt;i > 0; i--) printf("%d", a[i]); return orz; } ``` 如代码中注释处
by 青鸟_Blue_Bird @ 2020-05-24 14:31:42


@[bilibili官方](/user/234224) > https://zh.cppreference.com/w/cpp/language/operator_arithmetic > > 任何情况下,若右操作数的值为负或大于等于提升后左操作数中的位数,则行为未定义。 对 $64$ 位整型左移 $64$ 位是未定义行为
by zhanghengrui @ 2020-05-24 14:48:49


@[hjx__hjx](/user/320993) 你指谁的?
by 绿绵羊 @ 2020-05-24 14:54:28


我的吗?
by 绿绵羊 @ 2020-05-24 14:54:36


@[zhanghengrui](/user/110634) 谢谢
by 青鸟_Blue_Bird @ 2020-05-24 15:30:35


上一页 |