对于正数 n是奇数 2^n=(-2)^(n+1)+(-2)^n n是偶数 2^n=(-2)^n 对于负数 n是奇数 -2^n=(-2)^n n是偶数 -2^n=(-2)^(n+1)+(-2)^n #include <iostream> using namespace std; int main() { int num,ans[100],cnt=0,flag; scanf("%d",&num); memset(ans,0,sizeof(ans)); if(num==0) { printf("0/n"); return 0; } else if(num>0) flag=1; else { num=-num; flag=0; } while(num) { ans[cnt++]=num%2; num=num/2; } for(int i=0;;i++) { ans[i+1]+=ans[i]/2; ans[i]%=2; if(i%2==flag) ans[i+1]+=ans[i]; if(i+1>=cnt&&ans[i+1]==0) { cnt=i+1; break; } } for(int i=cnt-1;i>=0;i--) printf("%d",ans[i]); printf("/n"); return 0; }