思路:将这个十进制的数整数部分除16取余,小数部分乘16取整。
这里只写了整数部分的转换:
#include <bits/stdc++.h> #define inf 0x3f3f3f3f #define MAX 1000000000 #define mod 1000000007 #define FRE() freopen("in.txt","r",stdin) #define FRO() freopen("out.txt","w",stdout) using namespace std; typedef long long ll; typedef pair<int,int> P; const int maxn = 27; ll n; map<ll,char>mp; void init() { mp[0]='0';mp[1]='1';mp[2]='2';mp[3]='3';mp[4]='4';mp[5]='5'; mp[6]='6';mp[7]='7';mp[8]='8';mp[9]='9';mp[10]='A';mp[11]='B'; mp[12]='C';mp[13]='D';mp[14]='E';mp[15]='F'; } int main() { init(); scanf("%lld",&n); if(n==0) { printf("0 "); } else { stack<char> ans; ll y=0; while(n) { y = n%16; n = n/16; ans.push(mp[y]); } while(!ans.empty()) { printf("%c",ans.top()); ans.pop(); } printf(" "); } return 0; }