#包括#包括int高位(int n){如果(n){整数b=1;而(n>1){n/=2;b*=2;}返回b;}其他{返回0;}}int最小值;无效探索(int n,int b,int x,int y){如果(b==0){整数xy=x+y;如果(最小值>xy){最小值=xy;}}其他{int z=(n&b)?1 : 0;探索(n,b/2,2*x+z,y);探索(n,b/2,x,2*y+z);}}整数a(int n){最小值=INT_MAX;探索(n,高位(n),0,0);最小返回值;}整型main(){对于(int n=0;n<=1<<13;n++){printf(“%d%d\n”,n,a(n));fflush(标准输出);}返回0;}