电商平台业务流程图,seo优化步骤,类似于 wordpress,xammp配置wordpress题目描述 n!进制是指每i位的权值是(i1)!,每一位的系数为0~i1。 比如n!进制的21 2*2! 1*1! 5。给你一个10进制数#xff0c;求其n#xff01;进制的值。 输入 每行一个10进制的整数n,0≤n≤3,628,799。 输出 每行输出一个样例的结果。 样例输入 0
1
10
100
3628799样例输出… 题目描述 n!进制是指每i位的权值是(i1)!,每一位的系数为0~i1。 比如n!进制的21 2*2! 1*1! 5。给你一个10进制数求其n进制的值。 输入 每行一个10进制的整数n,0≤n≤3,628,799。 输出 每行输出一个样例的结果。 样例输入 0
1
10
100
3628799 样例输出 0
1
120
4020
987654321 解题思路本题一看题又是一个进制转换的题目。使得 n(十进制) an an-1 ······ a1 a0(p进制).
但是注意这个题又和普通的 p 进制转换不一样普通 p 进制转换的方法 ai n%p n/p。 而这题进制是随位数在变化ai 不再是通过模运算得到而是直接等于除运算的 商 。
因为普通p进制的算法是 n an*p^n-1 an-1*p^n-2 ····· a1*p a0*1 。 而 n!进制 n an*(n1)! an-1*(n)! ····· a1*2! a0*1!。 一个是指数求和的逆运算一个是乘法求和的逆运算。
再好的解释都没有一个例子来的生动大家找个数模拟一下就能很容易明白了。
AC代码
#include stdio.hint base[20] {0,1};
int main()
{for (int i 2; i 10; i ) // 计算 n!base[i] base[i-1]*i;int n,t,s;while (scanf(%d,n) ! EOF){if ( n 0 ) {puts(0); continue;} for (t 1; base[t1] n; t ); // 找到最接近的进制,从最大的开始while (n){for ( ; t 1; t --){s n/base[t];printf(%d,s);n % base[t]; }}puts();}return 0;
}