题解
2026-03-27 20:42:43
发布于:广东
19阅读
0回复
0点赞
真是入门吗?
#include<bits/stdc++.h>
using namespace std;
long long a[100010];
long long kj = 0;
int main(){
string s;//二进制数使用string类型以便补位和颠倒
cin>>s;
if(s.size()<8){
while(s.size()<8)
s = '0' + s;
}
else if(s.size()<16){
while(s.size()<16)
s = '0' + s;
}
else if(s.size()<32){
while(s.size()<32)
s = '0' + s;
}// 用判断进行补位
for(int i = s.size()-1;i>=0;i--){
if(s[i]>='0' && s[i]<='9'){
a[kj]=s[i]-'0';//因为整数精度可能大于long long,所以用数组记录整数的每一位数[3]
kj++;
}
}// 进行颠倒和将字符串转成整数
long long o = 0;
int i = 0;
kj--;//因为kj[25]循环最后会多加1,所以-1;
while(kj>=0){
o = o+(a[kj]*pow(2,i));
i++;
kj--;
}// 将整理好的二进制数进行十进制转换;
cout<<o;
return 0;
}
这里空空如也







有帮助,赞一个