1263: Gray Code
时间限制: 1 Sec 内存限制: 128 MB
提交: 204 解决: 115
题目描述
Gray code is wellknown for its stable. In the machine , gray code can ensure every neighbor number only change one binary bit. Such as the number 3 code as 010 and 4 code as 110 (but in normal binary code 3 is 011 and 4 is 100 ,change two bit) .
Gray code rule is as follows : First turn a number to a normal binary code such as 5 is 101 , and every bit XOR with its left bit , change 101 to 111 )
输入
There are several test cases,every test case has a decimal number n ( n<2^30)
输出
Please output the given number’s binary gray code . Extra leading zero is unexpected.
样例输入
41
样例输出
111101
提示
来源
//
// main.cpp
// 十进制转换为二进制
//
// Created by xiaohongqi on 16/3/16.
// Copyright © 2016年 xiaohongqi. All rights reserved.
// yaowen1996@hotmail.com
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <memory.h>
using namespace std;
int a[50] = {0}; // 注意自己的数组的开的区间的大小,再来进行判断题目之中的解;
int print(int a[], int n){
int i =0;
for(i = n-1 ; i >=0; i--){
cout << a[i];
}
cout << endl;
return 0;
}
int main(){
int T;
while (cin >> T) {
memset(a, 0, 50 * sizeof(int));
int count = 0;
while (T) {
a[count++] = T%2;
T /= 2;
}
//print(a, 8);
// 看了讨论版,发现它的前导零竟然不要,这个不看还真的是坑啊;
int i = 0;
for(i = 0; i <count; i++){
a[i] = a[i+1]^a[i];
}
print(a, count);
}
return 0;
}