现在的位置: 首页 > 综合 > 正文

ZOJ 1334 任意进制转换

2012年02月07日 ⁄ 综合 ⁄ 共 1386字 ⁄ 字号 评论关闭

#include<iostream.h>
#include<string.h>
#include<math.h>
#include<iomanip.h>
char s[100];
char chu[1000][100];
                                //由于每一次输出chu,之后如果又使用chu的话,chu里面的数据并
                                //没有消去,则有问题,所以开了一个字符串数组1000位,但这好
                                //像并没有解决实际问题……
int main()
{
    long from,to,a,i,j,k,temp,sum,jishu=0;    
    while((cin>>s>>from>>to)!=NULL)
    {
        sum=0;
        k=strlen(s);
        for(i=0;i<k;i++)
        {
            if(s[i]>'9')
                a=s[i]-'A'+10;
            else
                a=s[i]-'0';
            sum+=pow(from,k-i-1)*a;
        }
        if(to!=10)
        {
            j=0;
            while(sum!=0)
            {
                if(sum%to>=10)
                    chu[jishu][j]=sum%to-10+'A';
                else
                    chu[jishu][j]=sum%to+'0';
                sum/=to;
                j++;
            }
            
            for(i=0;i<j/2;i++)
            {
                temp=chu[jishu][i];
                chu[jishu][i]=chu[jishu][j-i-1];
                chu[jishu][j-i-1]=temp;
            }
            if(strlen(chu[jishu])<=7)
                cout<<setiosflags(ios::right)<<setw(7)<<chu[jishu]<<endl;
            else
                cout<<setiosflags(ios::right)<<setw(7)<<"ERROR"<<endl;
                
        }
        
        else
        {
            if(sum/10000000==0)
                cout<<setiosflags(ios::right)<<setw(7)<<sum<<endl;
            else
                cout<<setiosflags(ios::right)<<setw(7)<<"ERROR"<<endl;
        }
        jishu++;

 

    }
    return 0;
}

 

抱歉!评论已关闭.