考研算法
题目
题目要求
十进制转换为二进制
C++代码
#include <iostream>
#include <vector>
#include <cstring>
#include <algorithm>
using namespace std;
vector<int> div(vector<int> a,int b)//用于除法运算
{
vector<int> c;
int r=0;
for (int i=a.size()-1;i>=0;i--) //可以理解为模拟除法
{
r=r*10+a[i];
c.push_back(r/b);
r=r%b;
}
reverse(c.begin(),c.end());//反转
while(c.size()&&c.back()==0) c.pop_back();//去掉前面的0
return c;
}
int main()
{
string s;
while (cin>>s)
{
vector<int> a;
for (int i=0;i < s.size();i++)//vector特点需要将数字个位放在前面
{
a.push_back(s[s.size()-i-1]-'0');//里面是字符,要把字符变为数字
}
string res;
if (s=="0")
{
res="0";
}
else{
while(a.size())
{
res+=to_string(a[0]%2);
a=div(a,2);
}
}
reverse(res.begin(),res.end());//根据十进制转二进制,结果需要反转
cout<<res<<endl;
}
return 0;
}
知识点
vector
变长数组,支持随机访问,不支持任意位置插入
size()返回长度
begin()/end()前闭后开结构,我认为返回的指针(迭代器?)
front()/back()返回第一个和最后一个元素
push_back() 尾部插入
pop_back() 尾部删除
reverse
用于反转
C++ reverse函数的用法 - yuanch2019 - 博客园 (cnblogs.com)
to_string
用于转换成字符串
C++ 之 to_string_入门记-CSDN博客_to_string
python代码
import sys
for line in sys.stdin:
a = int(line)
b=[]
if a==0:
print(0)
continue
while a>=1:
b.append(a%2)
a=a//2
b.reverse()
for i in b:
print(i,end='')
print()
知识点
输入停止时,停止程序
import sys
for line in sys.stdin:
a = int(line)
列表倒序
b.reverse()