转成p进制算法C语言
今天打比赛的时候竟然下一没有想起来,
实际上是非常简单的。
举例说明:
$64 = 2 \times 3^3 + 1 \times 3^2 + 3^0$
根据秦九韶算法每次提出3,即 $3(2 \times 3^2 + 1 \times 3^1) + 1 = 64$,
可见得到最低位系数只需要对3取余,
将n除以3,重复上述步骤。
#include<stdio.h> void shift(int n, int p) //将n转化成p进制 { while(n) { printf("%d ", n%p); //从低到高输出 n = n / p; } } void shift2(int n, int p) //强行写成递归,hh { if(n == 0) return; printf("%d ", n%p); shift2(n/p, p); } int main() { shift(64, 3); //1 0 1 2 }
个性签名:时间会解决一切