讨论 / 进位转换解决题目
360736293 2018-05-05 13: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;

}

#1 ligx@2019-03-07 10:14:06
回复 删除
样例15 500你的答案是负数
查看更多回复
提交回复