思路:将这个十进制的数整数部分除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\n"); } 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("\n"); } return 0; }