BitComet 旗下网站

转到日志
相关贴吧:
acm of zju

zju1334 进制转换

楼主 发表于:2008-08-04 17:10:40 [回复]

/*2008-08-04 16:57:04 Accepted 1334 C++ 00:00.00 840K 天将降大任于我
 Basically Speaking 进制转换                    最近状态不好,A一道题A到吐血。
 将n进制首先转换为10进制,再将10进制转换为k进制
*/
#include<iostream>
#include<cmath>
using namespace std;
const int N=20;
char c[N+1];
int main()
{
 int i,j,t,n,k,s;
 while(scanf("%s%d%d",c,&n,&k)!=EOF)
 { 
  s=0;
       t=strlen(c);
    for(i=t-1;i>=0;i--)
          if(c[i]>='0'&&c[i]<='9')  s+=(c[i]-'0')*(int)pow((double)n,t-1-i);
    else s+=(c[i]+10-'A')*(int)pow(double(n),t-1-i);
    j=0;
    while(s)
    {  int r=s%k;
    if(r>=10) c[j++]=r-10+'A';
    else c[j++]=r+'0';
    s/=k;
    }
    if(j>7) printf("  ERROR\n");   //开始时判断条件为j>6,因为j是从0开始的,到6刚好7个数字的宽度,但是不明白为什么一定要多出一个来,这里起码增加了不止10WA
    else{
    while(j<7) c[j++]=' ';
    for(i=j-1;i>=0;i--) printf("%c",c[i]);
    printf("\n");
    }
 }
 return 0;
}

心难泰,世风坏,旧时正气今何在?正义寡,人情薄,闻道虽多,茅塞不开。怪!怪!怪! 空等待,几多载,冲出重围人心快!暴雨打,狂风袭,任他折磨,此志难改。耐!耐!耐!

 

您现在还没有登录,请在登录后发贴