Time Limit: 1 secs, Memory Limit: 32 MBios
试用 C++的类来表示通常进制数。数组
给定 2 个n位m进制整数A和B,计算m进制数整数P = A / B (向下取整)与 Q = A % B的值。测试
输入包含多个测试点。第一行为一个整数T,表示测试点数。spa
对于每一个测试点第 1 行是进制 m 。第 2 行和第 3 行分别给出 m 进制整数 A 和 B。ip
全部 m 进制数的10进制表示均不超出int范围。ci
对于每一个测试点,第一行输出 m 进制数整数 P = A / B 的值,第二行输出 Q = A % B 的值。string
1 16 29FA5 7
5FF3 0
/************************************************************************************************************
#include<iostream>
using namespace std;it
int map(char s){
return s-'A'+10;
}io
void change(int n, int p){
int s[65];
int c;
int m=0;;
if(n==0) cout<<0;
while (n!=0)//数制转换,结果存入数组s[m]
{
c=n%p;
n=n/p;
m++;s[m]=c; //将余数按顺序存入数组s[m]中
}
for(int k=m;k>=1;k--)//输出转换后的序列
{
if(s[k]>=10) //若为十六进制等则输出相对应的字母
cout<<(char)(s[k]+55);
else //不然直接输出数字
cout<<s[k];
}
cout<<endl;
}stream
int main(){ int n; cin>>n; while(n--){ int a; cin>>a; string s,ss; int c=0; cin>>s>>ss; for(int i=0;i<s.length();i++){ if(s[i]>='0'&&s[i]<='9'){ c = a*c + (s[i]-'0'); } else{ c = a*c + map(s[i]); } //cout<<c<<"#####"<<endl; } int cc=0; for(int i=0;i<ss.length();i++){ if(s[i]>='0'&&ss[i]<='9'){ cc = cc*a + (ss[i]-'0'); } else{ cc = cc*a + map(ss[i]); } //cout<<cc<<"******"<<endl; } int t = c/cc; int p = c%cc; //cout<<"t="<<t<<endl; //cout<<"p="<<p<<endl; change(t,a); change(p,a); } return 0;}