本文共 998 字,大约阅读时间需要 3 分钟。
问题描述
给定n个十六进制正整数,输出它们对应的八进制数。输入格式
输入的第一行为一个正整数n (1<=n<=10)。 接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出格式
输出n行,每行为输入对应的八进制正整数。【注意】
输入的十六进制数不会有前导0,比如012A。 输出的八进制数也不能有前导0。样例输入
2 39 123ABC样例输出
71 4435274【提示】
先将十六进制数转换成某进制数,再由某进制数转换成八进制。之所以要贴出来是因为错了很多次,最后发现是输出错了。。。
#include#include #include #include #include #include #include #include #include #include #define INF 0x3f3f3f3f#define MAXN 10000005#define Mod 10001using namespace std;string num1;string change(char e){ string low[]= { "0000","0001","0010","0011","0100","0101","0110","0111","1000","1001"}; if(e<='9'&&e>='0') return low[e-'0']; if(e=='A') return "1010"; if(e=='B') return "1011"; if(e=='C') return "1100"; if(e=='D') return "1101"; if(e=='E') return "1110"; if(e=='F') return "1111";}int ans[MAXN];int main(){ string tmp; int n; scanf("%d",&n); while(n--) { cin>>num1; tmp=""; int len=num1.length(); for(int i=0; i
转载地址:http://sacvb.baihongyu.com/