HDU1042 N!(大数问题,万进制)】的更多相关文章

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 参考文章:https://blog.csdn.net/tigerisland45/article/details/51530528 题意:求n!(n<=1000)数字很大,可以用万进制来做,就是到了10000就进一,每个数字用数组存储. #include<iostream> #include<cstdio> #include<cstring> using nam…
题目链接: 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,还有一个办法是用万进制,但是普通的万进制只能计算乘法,而这里需要用到除法,又不能用逆元(因为没有取模)怎么办呢? 我们发现,上面那篇博客得到的式子是一个组合数的式子,所以必然是整数,如果把分子和分母共同进行质因子分解,那么上面的质因子的数量必然大于下面的,所以我们就把每一个阶乘和数字进行质因子分解,然后对分…
思路:刚开始用的十进制模拟手算加法,超时了.然后想到刘汝佳大哥书上面用的亿进制能够加速大数运算,果然180ms过掉了. 亿进制与十进制相同,只不过是把八位看做一位,例如6464654654165,看成亿进制就是64646,54654165,这样运算时可以同时计算八位,快了很多.当然,想更快可以使用更高的进制,但注意不要超出long long范围 AC代码 #include <cstdio> #include <cmath> #include <algorithm> #i…
#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…
1116 K进制下的大数  基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 有一个字符串S,记录了一个大数,但不知这个大数是多少进制的,只知道这个数在K进制下是K - 1的倍数.现在由你来求出这个最小的进制K. 例如:给出的数是A1A,有A则最少也是11进制,然后发现A1A在22进制下等于4872,4872 mod 21 = 0,并且22是最小的,因此输出k = 22(大数的表示中A对应10,Z对应35). Input 输入大数对应的字符串S.…
转自:http://www.cnblogs.com/kuangbin/archive/2012/04/01/2429463.html 大致题意: 给定一个大数K,K是两个大素数的乘积的值. 再给定一个int内的数L 问这两个大素数中最小的一个是否小于L,如果小于则输出这个素数. 解题思路: 首先对题目的插图表示无语... 高精度求模+同余模定理 1.  Char格式读入K.把K转成千进制Kt,同时变为int型. 把数字往大进制转换能够加快运算效率.若用十进制则耗费很多时间,会TLE. 千进制的性…
进制转换 + 大整数取模一,题意: 在b进制下,求p%m,再装换成b进制输出. 其中p为b进制大数1000位以内,m为b进制数9位以内二,思路: 1,以字符串的形式输入p,m; 2,转换:字符串->整数 十进制->b进制; 3,十进制下计算并将整形结果转换成字符串形式,并倒序储存; 4,输出.三,步骤: 1,输入p[],m[]; 2,字符串->整形 + 进制->b进制: i,进制转换语句:m2 = m2*b + m[j]-'0'; ii,大整数取模,大整数可以写成这样的形式: 12…
题意:输入一个进制b,在输入两个基于b进制的大整数 x,y ,求x%y的b进制结果. http://162.105.81.212/JudgeOnline/problem?id=2305 函数: String st = Integer.toString(num, base); // 把num当做10进制的数转成base进制的st(base <= 35). int num = Integer.parseInt(st, base); // 把st当做base进制,转成10进制的int(parseInt…