描述
小乐乐在课上学习了二进制八进制与十六进制后,对进制转换产生了浓厚的兴趣。因为他的幸运数字是6,所以他想知道一个数表示为六进制后的结果。请你帮助他解决这个问题。
输入描述:
输入一个正整数n (1 ≤ n ≤ 10^9)
输出描述:
输出一行,为正整数n表示为六进制的结果
示例1
输入:
6
输出:
10
示例2
输入:
120
输出:
320
思路:这里我的想法主要是想通过数组实现,首先我通过本题所给数据范围推算最大数据,我得到的最大数据是6^12,刚好数组的下标对应次方,我们在数组每一个格子都除以对应的6^下标,得到对应6进制的数字,再使这个数字取模,继续重复上述操作,最后输出即可!!!!!!!!!
下面请看代码
#include<stdio.h>
#include<math.h>
int main()
{
int n,m=12,num[15],i;
scanf("%d",&n);
for(i=0;i<=12;i++)
{
num[i]=n/pow(6,m);
n=n%(int)pow(6,m);
m--;
}
int f=0;
for(i=0;i<=12;i++)
{
if(num[i]!=0)//使用变量巧妙避开输出前导0
{
++f;
}
if(f==0)
continue;
printf("%d",num[i]);
}
return 0;
}
下面是题解:
对于这种进制转换的题目,我们常常使用短除法!!!!!!!!!!!!!!!!!!!!!!