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;}