格雷码普及题
#include<stdio.h>
typedef long long ll;
ll n;
char s1[65],s2[65];
inline ll ip(char *s)
{
ll rt=0;
for (int i=1;i<=n;i++) if (s[i]=='1') rt+=1LL<<n-i;
return rt;
}
inline ll bin(ll x)
{
ll rt=x;
while (x>>=1) rt^=x;
return rt;
}
int main()
{
scanf("%lld%s%s",&n,s1+1,s2+1);
printf("%lld",bin(ip(s2))-bin(ip(s1))-1);
}
本文介绍了一种格雷码转换算法的实现方法,通过两个内联函数分别完成从二进制到格雷码及从格雷码到二进制的转换,并计算两个格雷码之间的距离。


被折叠的 条评论
为什么被折叠?



