标签:1027 radix 20 ++ 13 Colors num printf datas
题目描述:
给定三个[0,168]范围内的十进制整数,将它们转换为十三进制后按顺序输出。
单词:radix--基数
输入格式:
输入三个十进制数,用空格隔开。
输出格式:
首先输出#,然后是6位数,其中英文字符必须大写。如果单色只有1位数字长,必须其左侧打印0。
样例:
输入:15 43 71
输出:#123456
思路:
由于题目的数据范围为[0,168],因此给定的整数x在十三进制下一定可以表示为x=a*131+b*130(因为168<13),于是只要想办法求出a跟b即可。于是设置字符数组radix[13]来存储13进制的数字radix[0]=0,radix[1]=1····radix[12]='C'。radix[num/13]即为13进制的第一位数,radix[num%13]即为13进制的第二位数。
注意点:
如果采用正常的进制转换,要注意用0填充位数。
代码:
法一:
1 #include <cstdio> 2 //建立0~13与0~9’、A’、'B’、C’的关系 3 char radix[13] = { '0','1','2','3','4','5','6','7','8','9','A','B','C' }; 4 5 int main(){ 6 //输入三个整数 7 int r,g,b; 8 scanf("%d%d%d", &r, &g, &b); 9 printf("#"); 10 11 //输出radix[a]与radix[b] 12 printf("%c%c", radix[r / 13], radix[r % 13]); 13 printf("%c%c",radix[g / 13],radix[g % 13]); 14 printf("%c%c",radix[b / 13],radix[b % 13]); 15 16 return 0;View Code
法二:
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 5 int datas[48]; 6 char note[3] = { 'A','B','C' }; 7 8 int main() 9 { 10 int r, g, b, num = 0; 11 12 scanf("%d %d %d", &r, &g, &b); 13 printf("#"); 14 15 //获取第一位数转换 16 do 17 { 18 datas[num++] = r % 13; 19 r /= 13; 20 } while (r != 0); 21 if (num != 2) 22 { 23 datas[num] = 0; 24 num++; 25 } 26 27 //获取第二位数的转换 28 do 29 { 30 datas[num++] = g % 13; 31 g /= 13; 32 } while (g != 0); 33 if (num != 4) 34 { 35 datas[num] = 0; 36 num++; 37 } 38 39 //获取第三位数的转换 40 do 41 { 42 datas[num++] = b % 13; 43 b /= 13; 44 } while (b != 0); 45 if (num != 6) 46 { 47 datas[num] = 0; 48 num++; 49 } 50 51 //进行输出 52 for (int i = 1;i < num;i += 2) 53 { 54 if (datas[i] >= 10)printf("%c", note[datas[i] - 10]); 55 else printf("%d", datas[i]); 56 57 if (datas[i - 1] >= 10)printf("%c", note[datas[i - 1] - 10]); 58 else printf("%d", datas[i - 1]); 59 } 60 61 return 0; 62 }View Code
参考-《算法笔记》-胡凡
标签:1027,radix,20,++,13,Colors,num,printf,datas 来源: https://www.cnblogs.com/fangzhiyou/p/12405378.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。