这是一题进制转换问题,因为最大为2^31-1,所以只要建立一个数组把2^1-1 到2^31-1先保存就是一个很简单的问题
1 #include<iostream> 2 #include<string> 3 #include<algorithm> 4 using namespace std; 5 int main(){ 6 long long kth[32]; 7 kth[0]=1; 8 for(int i=1;i<32;i++){ 9 kth[i]=(kth[0]=kth[0]<<1)-1; 10 } 11 string temp; 12 while(getline(cin,temp)){ 13 if(temp=="0") 14 break; 15 reverse(temp.begin(),temp.end()); 16 long long num=0; 17 for(int i=0;i<temp.size();i++) 18 num+=(temp[i]-‘0‘)*kth[i+1]; 19 cout<<num<<endl; 20 } 21 }