NC54635. [CSP2019]格雷码(code)
描述
输入描述
仅一行两个整数 n,k,意义见题目描述。
输出描述
仅一行一个 n 位二进制串表示答案。
示例1
输入:
2 3
输出:
10
说明:
2 位格雷码为:00,01,11,10,编号从 0∼3,因此 3 号串是 10示例2
输入:
3 5
输出:
111
说明:
3 位格雷码为:000,001,011,010,110,111,101,100,编号从 0∼7,因此 5 号串是 111。Pascal(fpc 3.0.2) 解法, 执行用时: 2ms, 内存消耗: 256K, 提交时间: 2019-11-16 19:17:55
var n,i:longint; k:qword; w:boolean; begin read(n,k); for i:=n-1 downto 0 do if odd(k shr i)xor w then begin write(1); w:=not w; end else write(0); writeln; end.
C++14(g++5.4) 解法, 执行用时: 4ms, 内存消耗: 504K, 提交时间: 2019-11-24 22:04:38
#include<iostream> int n; unsigned long long k; int main(){ std::cin>>n>>k; k^=k>>1; while(~--n)std::cout<<(k>>n&1); }
C++11(clang++ 3.9) 解法, 执行用时: 6ms, 内存消耗: 400K, 提交时间: 2019-11-18 20:57:02
#include<iostream> unsigned long long n,k; int main(){std::cin>>n>>k;k=(k>>1^k);for(int i=n-1;i+1;i--)std::cout<<(k>>i&1);}