SDUT OJ進数変換
1694 ワード
しんしんへんかん
Time Limit: 1000MS Memory limit: 65536K
タイトルの説明
10進数Nを入力し、R進数出力に変換します.
入力
入力データは複数の試験例を含み、各試験例は2つの整数N(32ビット整数)とR(2<=R<=16,R<>10)を含む.
しゅつりょく
変換された数をテストインスタンスごとに出力し、出力ごとに1行を占めます.Rが10より大きい場合、対応する数値規則は16進数(例えば、10はAで表されるなど)を参照する.
サンプル入力
7 2
23 12
-4 3
サンプル出力
111
1B
-11
0の時の枝切りで、WAを2回掛けさせてもらいましたが、0の時はどんどん余すことができず、そのサイクルに入らず!結果を出力しない!
#include <iostream>
#include <string>
#include <stdio.h>
#include <string.h>
#include <map>
#include <stack>
#include <algorithm>
#include <ctype.h>
using namespace std;
int main()
{
int n, r, dd, ff;
int i, j;
int flag;
while(scanf("%d %d", &n, &r)!=EOF)
{
flag=0;
stack<int>q;
if(n==0)
{
printf("0
");
continue;
}
if(n<0)
{
flag=1;
n=-n;
}
while(n!=0)
{
dd = n%r;
q.push(dd);
n/=r;
}
if(flag==1)
{
printf("-");
}
while(!q.empty())
{
ff=q.top();
q.pop();
if(ff>=10)
{
printf("%c", ff+55);
}
else
{
printf("%d", ff);
}
}
printf("
");
}
return 0;
}