杭電oj符号化2031
1474 ワード
問題の説明:
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
分析:
この問題は10進数から他の進数に変換する方法が必要だ.
1.整数配列記憶を使用し、(10,11,12,1314,15)
2、負数を正数に変換して処理する.
3、逆順出力
コード:
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
分析:
この問題は10進数から他の進数に変換する方法が必要だ.
1.整数配列記憶を使用し、(10,11,12,1314,15)
2、負数を正数に変換して処理する.
3、逆順出力
コード:
#include
#include
#include
int main()
{
int N, R;
while (~scanf("%d %d", &N, &R))
{
int num, i = 0, c[100000];
for (int num = abs(N); num != 0; ++i)// abs ,
{
c[i] = num % R;//
num /= R;// , ,
}
if (N < 0)// ,
printf("-");
for (int j = i - 1; j >= 0; --j)// ‘10’,‘11’,‘12’,‘13’,‘14’,‘15’, 。
{
if (c[j] == 10)
printf("A");
else if (c[j] == 11)
printf("B");
else if (c[j] == 12)
printf("C");
else if (c[j] == 13)
printf("D");
else if (c[j] == 14)
printf("E");
else if (c[j] == 15)
printf("F");
else
printf("%d", c[j]);
}
printf("
");
}
return 0;
}