ブルーブリッジカップ基礎練習——10進数から16進数へ
15277 ワード
リソース制限時間制限:1.0 sメモリ制限:512.0 MB問題記述16進数は、プログラム設計時によく使用される整数の表現です.0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fの16シンボルで,それぞれ10進数の0から15を表す.16進数のカウント方法は満16進1であるため、10進数16は16進数で10であり、10進数の17は16進数で11であり、このように10進数の30は16進数で1 Eである.非負の整数を与え、16進数の形式で表す.入力フォーマット入力には、変換する数を表す非負の整数aが含まれます.0<=a<=21748483647出力フォーマットこの整数を出力する16進表記サンプル入力30サンプル出力1 E
まず、16進数を用いて10進数が各x*16のn次方の和に変換し、カウンタで最大の16のn次方を見つけることができ、配列、switch文を通じて、以下の解法を得たいと思います.
これからはもっと考えて、周到に考えなければなりません.
まず、16進数を用いて10進数が各x*16のn次方の和に変換し、カウンタで最大の16のn次方を見つけることができ、配列、switch文を通じて、以下の解法を得たいと思います.
#include
#include
int main()
{
int a;
int t;
int i,j;
int temp;
int cnt = 0,count = 0;
int b[10] = {2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647},c[10]={0};
scanf("%d",&a);
t = a;
while(t >15)
{
t/=16;
cnt++;
}
for(i = 0;cnt>=0;i++)
{
b[i] = a/pow(16,cnt);
a = a-(b[i] * pow(16,cnt));
cnt--;
}
for(i = 0;i<10;i++)
{
if(b[i]!=2147483647)
{
c[count] = b[i];
count++;
}
}
for(j = 0;j<count;j++)
{
temp = c[j];
switch(temp)
{
case 0:printf("0");break;
case 1:printf("1");break;
case 2:printf("2");break;
case 3:printf("3");break;
case 4:printf("4");break;
case 5:printf("5");break;
case 6:printf("6");break;
case 7:printf("7");break;
case 8:printf("8");break;
case 9:printf("9");break;
case 10:printf("A");break;
case 11:printf("B");break;
case 12:printf("C");break;
case 13:printf("D");break;
case 14:printf("E");break;
case 15:printf("F");break;
}
}
return 0;
}
これからはもっと考えて、周到に考えなければなりません.
#include
int main()
{
int a;
scanf("%d",&a);
printf("%X",a);
return 0;
}