1813. M進制數問題

1813. M進制數問題

Constraints

Time Limit: 1 secs, Memory Limit: 32 MBios

Description

試用 C++的類來表示通常進制數。數組

給定 2 個nm進制整數AB,計算m進制數整數P = A / B (向下取整)與 = A % B的值。測試

 

Input

輸入包含多個測試點。第一行爲一個整數T,表示測試點數。spa

對於每一個測試點第 1 行是進制 m 。第 2 行和第 3 行分別給出 m 進制整數 ABip

全部 m 進制數的10進製表示均不超出int範圍。ci

 

 

Output

對於每一個測試點,第一行輸出 m 進制數整數 P = A / B 的值,第二行輸出 Q = A % B 的值。string

 

Sample Input

1
16
29FA5
7

Sample Output

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

相關文章
相關標籤/搜索