游客 Signup | Login
中文 | En

2191 - 十进制转16进制

输入十进制数, 转换成16进制.

Input

有多行数据,每一行数据N的数值范围在[0, 231 - 1].

(用for 或while循环实现,不用API提供的直接转换方法)

Output

每一行输出N所对应的十六进制。

Examples

Input

2012
2013

Output

7DC
7DD

Solution C

#include<stdio.h>
int main(){
    int num;
    while(scanf("%d",&num)!=EOF){
            int i;
            int b[100];
    for(i=0;i>=0;i++) {
        b[i]=num%16;
        if(num/16==0) break;
        num=num/16;
    }
    for(i=i;i>=0;i--) {
            if(b[i]==10) printf("A");
            else if(b[i]==11) printf("B");
            else if(b[i]==12) printf("C");
            else if(b[i]==13) printf("D");
            else if(b[i]==14) printf("E");
            else if(b[i]==15) printf("F");
            else  printf("%d",b[i]);
    }
    printf("\n");
    }
    return 0;
}

Solution C++

#include<iostream>
#include<vector>
using namespace std;

void Translate(int a){
	vector<char> v;

	do{
		int remain=0;
		remain=a%16;
		if(remain>9)
			v.push_back('F'-(15-remain));
		else
			v.push_back(char(remain)+48);
		a=a/16;
	}while(a>0);

	for(int i=v.size()-1;i>=0;i--)
		cout<<v[i];
	cout<<endl;

}

int main(){
	int a;
	while(cin>>a){
		Translate(a);
	}
	return 0;
}
Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题