HDU_1042——阶乘,万进制】的更多相关文章

#include <cstdio> ; const int BASE = MAX; int main() { int n, i, j; while(~scanf("%d",&n)) { ]={}, left=MAX-, t=; ans[MAX-]=; ;i<=n;i++) { ;j>=left;j--) { ans[j] = ans[j]*i + t; t = ans[j]/BASE; ans[j] = ans[j]%BASE; } if(t) { le…
N! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 88267    Accepted Submission(s): 26008 Problem Description Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N! Input One N in o…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1042 N! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 89320    Accepted Submission(s): 26376 Problem Description Given an integer N(0 ≤ N ≤ 1…
题目传送门 思路: 这道题需要前置知识prufer编码,这篇博客对prufer编码和这道题的分析写的很好. 这里主要讲一些对大数阶乘的分解,一个办法当然是用高精度,上面这篇博客用的是java,还有一个办法是用万进制,但是普通的万进制只能计算乘法,而这里需要用到除法,又不能用逆元(因为没有取模)怎么办呢? 我们发现,上面那篇博客得到的式子是一个组合数的式子,所以必然是整数,如果把分子和分母共同进行质因子分解,那么上面的质因子的数量必然大于下面的,所以我们就把每一个阶乘和数字进行质因子分解,然后对分…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1042 参考文章:https://blog.csdn.net/tigerisland45/article/details/51530528 题意:求n!(n<=1000)数字很大,可以用万进制来做,就是到了10000就进一,每个数字用数组存储. #include<iostream> #include<cstdio> #include<cstring> using nam…
思路:刚开始用的十进制模拟手算加法,超时了.然后想到刘汝佳大哥书上面用的亿进制能够加速大数运算,果然180ms过掉了. 亿进制与十进制相同,只不过是把八位看做一位,例如6464654654165,看成亿进制就是64646,54654165,这样运算时可以同时计算八位,快了很多.当然,想更快可以使用更高的进制,但注意不要超出long long范围 AC代码 #include <cstdio> #include <cmath> #include <algorithm> #i…
转自:http://www.cnblogs.com/kuangbin/archive/2012/04/01/2429463.html 大致题意: 给定一个大数K,K是两个大素数的乘积的值. 再给定一个int内的数L 问这两个大素数中最小的一个是否小于L,如果小于则输出这个素数. 解题思路: 首先对题目的插图表示无语... 高精度求模+同余模定理 1.  Char格式读入K.把K转成千进制Kt,同时变为int型. 把数字往大进制转换能够加快运算效率.若用十进制则耗费很多时间,会TLE. 千进制的性…
题意: 给出两个数字a和b,求a的阶乘转换成b进制后,输出 (1)后缀中有多少个连续的0? (2)数a的b进制表示法中有多少位? 思路:逐个问题解决. 设a!=k.  k暂时不用直接转成b进制. (1)阶乘后缀0问题.先看这个十进制后缀0的例子:http://www.cnblogs.com/xcw0754/p/4604473.html 解法差不多,稍变化. 首先将b分解成若干质数(比如8={2*2*2})保存在一个集合A中(注意自然数的质数分解是唯一的),只要有一个序列A就能构成一个0,因为满b…
输入N求N的阶乘的准确值.   Input 输入N(1 <= N <= 10000) Output 输出N的阶乘 Input示例 5 Output示例 120解:这其实是MOD进制,将一个int或者long long数据类型作为一个数位,满MOD进一(本题中MOD=1000000000). (注意选择合适的数据类型,避免计算过程中数据溢出.) #include <stdio.h> #define MOD 1000000000 ]; int main() { int n; while…
题意 : 求一个数 n 的阶层在 m 进制下末尾 0 的个数 思路分析 : 如果是 10 进制地话我们是很容易知道怎么做的,数一下其对 5 约数地个数即可,但是换成 m 进制的话就需要先将 m 分解质因数,然后然后看 n! 下因数个数最少的是几个,即是最终答案. 代码示例 : #define ll long long const ll maxn = 1e6+5; const ll mod = 1e9+7; const double eps = 1e-9; const double pi = ac…