进制转换

来源:互联网 发布:网络黑客攻击 编辑:程序博客网 时间:2024/06/05 06:16

【任务】

把一个x进制的数转换成一个y进制的数


模板:

string transform(int x,int y,string s){    string res="";    int sum=0;    for(int i=0;i<s.length();++i)    {        if(s[i]=='-')  continue;        if(s[i]>='0'&&s[i]<='9')        {            sum=sum*x+s[i]-'0';        }        else        {            sum=sum*x+s[i]-'A'+10;        }    }    while(sum)    {        char tmp=sum%y;        sum/=y;        if(tmp<=9)        {            tmp+='0';        }        else        {            tmp=tmp-10+'A';        }        res=tmp+res;    }    if(res.length()==0)  res="0";    if(s[0]=='-')  res='-'+res;    return res;}

题目:

链接:http://acm.hdu.edu.cn/showproblem.php?pid=2031

#include<iostream>#include<cstdio>#include<cstring>#include<string>using namespace std;string s;int r;string transform(int r,string s){    string res="";    int sum=0;    for(int i=0;i<s.length();++i)    {        if(s[i]=='-')  continue;        if(s[i]>='0'&&s[i]<='9')        {            sum=sum*10+s[i]-'0';        }        else        {            sum=sum*10+s[i]-'A'+10;        }    }    while(sum)    {        char tmp=sum%r;        sum/=r;        if(tmp<=9)        {            tmp+='0';        }        else        {            tmp=tmp-10+'A';        }        res=tmp+res;    }    if(res.length()==0)  res="0";    if(s[0]=='-')  res='-'+res;    return res;}int main(){    while(cin>>s>>r)    {        string tt=transform(r,s);        cout<<tt<<endl;    }    return 0;}


0 0