c++1068: 二进制数 (二进制数转换为十进制数)
·
问题:
题目描述
将一个二进制数,转换为对应的十进制数。
输入
输入第一行为一个数n,表示二进制数的位数。
第二行有高位到低位依次输入二进制数的每一位数。
输出
输出一个整数,为该二进制数对应的十进制数。
样例输入
12
1 0 0 0 0 0 0 0 0 0 0 1
样例输出
2049
代码实现:
#include <iostream>
using namespace std;
#include<vector>
int main() {
int n;
cin>>n;
vector<int>arr;
for(int i=0;i<n;i++)
{
int temp;
cin>>temp;
arr.push_back(temp);
}
int result=arr[arr.size()-1];
int two=2;
for(int i=arr.size()-2;i>=0;i--)
{
result=result+two*arr[i];
two=two*2;
}
cout<<result<<endl;
}
效果:

分析:
主要就是使用:
假设输入的一列式子为:an,an-1,……a2,a1;
转化之后的十进制数为y;
y=2的0次方*a1+2的1次方*a2+……2的n-1次方*an;
注意,我们这里不能用pow,因为pow一般是处理浮点数的,这里用“可能会出问题”!
我们是先设置一个变量two,然后内部循环的时候,从后往前,逐渐x2,就达到了2的阶乘的效果!
更多推荐



所有评论(0)