2012年5月9日

N!最右边的非零位的值

摘要: 阶乘问题Time Limit: 5000MS Memory Limit: 65535KB Submissions: 348 Accepted: 37 Description 也许你早就知道阶乘的含义,N阶乘是由1到N相乘而产生,如:12! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 = 479,001,60012的阶乘最右边的非零位为6。写一个程序,计算N(1<=N<=50,000,000)阶乘的最右边的非零位的值。注意:10,000,000!有2499999个零。 Input仅一行包含一个正整数N。 Output单独一行包 阅读全文

posted @ 2012-05-09 10:20 即为将军 阅读(2067) 评论(0) 推荐(0)

求解n的阶乘的十进制表示的最右非零位上的数字[转]

摘要: 求解n的阶乘的十进制表示的最右非零位上的数字[转]下面是算法说明如果用 C 表示 [n/5] + [n/25] + [n/125] + ..., 那么需要求的是下面的同余方程 n ! ≡ x * 10^c (mod 10^(c+1))的解 x , 0< x ≤ 9.上面这个同余方程等价于下面的方程组 n! ≡ x * 5^c * 2^c (mod 2^(c+1)), n! ≡ x * 2^c * 5^c (mod 5^(c+1))当 n > 1 时所有的偶数都是上面的方程组中第一个方程的解,而且, n > 1 时该方程组的第一个方程没有奇数解,因此 n > 1 时只需要 阅读全文

posted @ 2012-05-09 10:11 即为将军 阅读(932) 评论(0) 推荐(1)

N!末尾有多少个0

摘要: 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3 628 800,N!的末尾有两个0。分析:对N!进行质因数分解,N!=(2^x)×(3^y)×(5^z)…,由于10 = 2×5,所以M只跟X和Z相关,每一对2和5相乘可以得到一个10,于是M = min(X, Z)。不难看出X大于等于Z,因为能被2整除的数出现的频率比能被5整除的数高得多,所以把公式简化为M = Z【解法一:分析后①】#include<iostream>using namespace std;int main(){ int n; int num,p; n = 阅读全文

posted @ 2012-05-09 09:30 即为将军 阅读(2358) 评论(0) 推荐(0)

导航