SDUT-1252進変換
9818 ワード
しんしんへんかん
タイトルの説明:
10進数Nを入力し、R進数出力に変換します.
Input入力データは、2つの整数N(32ビット整数)およびR(2<=R<=16,R!=10)を含む複数の試験例を含む.
Outputは、テストインスタンスごとに変換された数を出力し、出力ごとに1行を占めます.Rが10より大きい場合、対応する数値規則は16進数(例えば、10はAで表されるなど)を参照する.
Sample Input
7 2 23 12 -4 3
Sample Output
111 1B -11
問題:
短除法を用いて,進数変換を得た.スタックを使用して、進数変換を格納します.
ACコード:
タイトルリンク:山理工1252
タイトルの説明:
10進数Nを入力し、R進数出力に変換します.
Input入力データは、2つの整数N(32ビット整数)およびR(2<=R<=16,R!=10)を含む複数の試験例を含む.
Outputは、テストインスタンスごとに変換された数を出力し、出力ごとに1行を占めます.Rが10より大きい場合、対応する数値規則は16進数(例えば、10はAで表されるなど)を参照する.
Sample Input
7 2 23 12 -4 3
Sample Output
111 1B -11
問題:
短除法を用いて,進数変換を得た.スタックを使用して、進数変換を格納します.
ACコード:
#include
using namespace std;
int a[80000000];
char b[7] = {'A','B','C','D','E','F','G'};
int main(){
long long n,m;
while(cin>>n>>m){
int top = 0;
int sum = 0;
if(n == 0){
cout<<n<<endl;
}else{
if(n > 0){
while(n != 0){
sum = n % m;
n = n / m;
a[top] = sum;
top++;
}
for(int i = top - 1;i >= 0;i--){
if(a[i] > 9){
int t = a[i];
cout<<b[t-10];
}else{
cout<<a[i];
}
}
cout<<endl;
}else{
n = n * -1;
while(n != 0){
sum = n % m;
n = n / m;
a[top] = sum;
top++;
}
cout<<"-";
for(int i = top - 1;i >= 0;i--){
if(a[i] > 9){
int t = a[i];
cout<<b[t-10];
}else{
cout<<a[i];
}
}
cout<<endl;
}
}
}
return 0;
}
タイトルリンク:山理工1252