sicily 1813. M进制数问题

#include<iostream>        //先把m进制整数A和B转化成十进制,计算出A/B与A%B的十进制值,结果用m进制表示
#include<math.h>
#include
<string.h>
using namespace std;
int t,m;
int to_dec(char ch[]) //m进制转化成十进制
{
int n=0;
double k=0;
for(int i=strlen(ch)-1;i>=0;i--)
{
if(ch[i]>='0'&&ch[i]<='9')
n
+=(ch[i]-'0')*pow(m,k);
else
n
+=(ch[i]-'A'+10)*pow(m,k);
k
++;
}
return n;
}
void to_m(int n) //十进制转化成m进制
{
if(n==0)
{
cout
<<"0\n";
return ;
}
char ch[100];
int r=0;
while(n>0)
{
if(n%m>9)
ch[r
++]=char(n%m-10+'A');
else
ch[r
++]=char(n%m+'0');
n
/=m;
}
for(int i=0;i<r/2;++i)
swap(ch[i],ch[r
-1-i]);
ch[r]
=0; //字符串结束符
cout<<ch<<endl;
}
int main()
{
char a[100],b[100];
cin
>>t;
while(t--)
{
cin
>>m>>a>>b;
int x=to_dec(a),y=to_dec(b),p=x/y,q=x%y;
to_m(p);
to_m(q);
}
return 0;
}

  

posted on 2011-07-21 10:24  sysu_mjc  阅读(313)  评论(0编辑  收藏  举报

导航