360736293 2018-05-04 22:59:15
点我顶贴
收藏
删除
首先观察如下
三进制转10 1 3 4 9 10 12 13
0001 0010 0011 0100 0101 0110 0111
二进制转10 1 2 3 4 5 6 7
我们可得出思路
将N转化成二进制,完了把这个二进制当成三进制数,然后转化成十进制
样例输出完全正确,别的帖子给的答案虽然ac100, 但是他的样例输出根本就不正确
/* 将数字转化为k进制*/
#include<stdio.h>
#include<math.h>
int main()
{
int k,n,a[9999]={0},i=1;
int long sum=0;
scanf("%d%d",&k,&n);//数是k,第n项
//将N转化成二进制数储存-----------------------------------
while(n!=0)
{
if(n%2==0)
{
a[i]=0;
}
if(n%2==1)
{
a[i]=1;
}
n=n/2;
i++;
}
i--;
//将二进制数值当成k进制反向转化成十进制输出----------------
while(i>=1)
{
sum=sum+a[i]*pow(k,i-1);
i--;
}
printf("%d",sum);
return 0;
}