进制转换
来源:互联网 发布:ic卡破解软件 编辑:程序博客网 时间:2024/05/16 11:18
#include<iostream>#include<vector>#include<iterator>#include<string>#include<cstdio>#include<bitset>using namespace std;#define dlong long long intvoid m2n(int m, char* mNum, int n, char* nNum) { int i = 0; char c, *p = nNum; //这是一个考查处所,是不是能用起码乘法次数。 while (*mNum != '\0') i = i*m + *mNum++ - '0'; //辗转取余 while (i) { *p++ = i % n + '0'; i /= n; } *p-- = '\0'; //逆置余数序列 while (p > nNum) { c = *p; *p-- = *nNum; *nNum++ = c; }}void convert(dlong m,int n){ vector<int>vec;while(m){vec.push_back(m%n);m/=n; }for(vector<int>::reverse_iterator iter=vec.rbegin();iter!=vec.rend();){cout<<*iter++;}cout<<endl;}int main(){int n;cin>>n;vector<string>vec;string str;fflush(stdin);for(int i=0;i<n;++i){getline(cin,str);vec.push_back(str);}for(int i=0;i!=vec.size();++i){bitset<sizeof(vec[i])*8>b(vec[i]);convert(b.to_ulong(),3);}return 0;}