最新消息:点击查看大S的省钱秘笈

Vijos P1176 奇怪的数列 C语言版

Vijos题解 Slyar 58浏览 0评论

文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

描述 Description

这个数列是这样的:
0,1,3,2,6,7,5,4,12,13,15,14,10,11,9,8,24,25,27,26,30,31……
先仔细研究一下这个数列的规律。
现在他们请你编写一个程序,要求找出数n在此数列中的位置序号k。

输入格式 Input Format

输入数据只有一行,为数 n (n<=2^31-1)

输出格式 Output Format

输出数据只有一行,为数k。

Tip:传说中的格雷码。。。

二进制-->格雷码:从最右边一位起,依次将每一位与左边一位异或(^),作为当前格雷码的值,最左边一位不变(相当于左边是0)

格雷码-->二进制:从左边第二位起,将每位与左边一位二进制值异或(^),作为当前二进制的值,最左边一位不边(相当于左边是0)

#include <stdio.h>

int fuck(int x){
if (x==0) return 0;
else return x^fuck(x/2);
}

int main(){
int n;
scanf("%d",&n);
printf("%d",fuck(n)+1);
system("pause");
return 0;
}

转载请注明:Slyar Home » Vijos P1176 奇怪的数列 C语言版

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址