题目描述
将R进制数转化为十进制数,并输出。
题目输入
输出一个十进制整数。
代码
#include<stdio.h>
int main()
{
char s[2000];
gets(s);
int sum=0,R;
scanf("%d",&R);
for(int i=0;s[i];i++)
sum=sum*R+s[i]-'0';
printf("%d",sum);
return 0;
}
(1) R进制数转化为十进制数用朴素算法也就是按正常算的话需要n(n+1)/2次乘法和n次加法,当数值很大的话,代价会很大。
(2)因此,可以用秦九韶算法来计算如图所示
所以可以把九进制数2022转化为十进制数按照如下图方式求得
v1 = 0*9+'2'-'0' ........
v2=v1*9+'0'-'0' 推得
v3=v2*9+'2'-'0'
v4=v3*9+'2'-'0'