nyoj28 大数阶乘 亿进制优化
思路:刚开始用的十进制模拟手算加法,超时了。然后想到刘汝佳大哥书上面用的亿进制能够加速大数运算,果然180ms过掉了.
亿进制与十进制相同,只不过是把八位看做一位,例如6464654654165,看成亿进制就是64646,54654165,这样运算时可以同时计算八位,快了很多。当然,想更快可以使用更高的进制,但注意不要超出long long范围
AC代码
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <utility>
#include <string>
#include <iostream>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <stack>
using namespace std;
#define eps 1e-10
#define inf 0x3f3f3f3f
#define PI pair<int, int>
typedef long long LL;
const int maxn = 1e4 + 5, base = 100000000;
int res[maxn];
int len;
int main() {
int n;
while(scanf("%d", &n) == 1) {
memset(res, 0, sizeof(res));
res[0] = 1;
len = 1;
for(int i = 2; i <= n; ++i) {
int g = 0;
for(int j = 0; j < len || g > 0; ++j) {
LL x = (LL)i * res[j] + g;
res[j] = (int)(x % base);
g = int(x / base); //进位标记
len = max(j+1, len); //更新结果的长度
}
}
for(int i = len-1; i >= 0; --i) {
if(i == len-1) printf("%d", res[i]);
else printf("%08d", res[i]);
}
printf("\n");
}
return 0;
}
如有不当之处欢迎指出!
nyoj28 大数阶乘 亿进制优化的更多相关文章
- (二维数组 亿进制 或 滚动数组) Hat's Fibonacci hdu1250
Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDU3605: Escape-二进制优化建图-最大流
目录 目录 思路: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 目录 题意:传送门 原题目描述在最下面. \(n(n\leq 100000)\)个人\(m(m\leq 10) ...
- HDU_1042——阶乘,万进制
#include <cstdio> ; const int BASE = MAX; int main() { int n, i, j; while(~scanf("%d" ...
- 【大数阶乘】NYOJ-28
大数阶乘 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它? 输入 输入一个整数 ...
- 51 Nod 1116 K进制下的大数
1116 K进制下的大数 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 有一个字符串S,记录了一个大数,但不知这个大数是多少进制的,只知道这个数 ...
- poj2305-Basic remains(进制转换 + 大整数取模)
进制转换 + 大整数取模一,题意: 在b进制下,求p%m,再装换成b进制输出. 其中p为b进制大数1000位以内,m为b进制数9位以内二,思路: 1,以字符串的形式输入p,m; 2,转换:字符串-&g ...
- UVA 10061 How many zero's and how many digits ? (m进制,阶乘位数,阶乘后缀0)
题意: 给出两个数字a和b,求a的阶乘转换成b进制后,输出 (1)后缀中有多少个连续的0? (2)数a的b进制表示法中有多少位? 思路:逐个问题解决. 设a!=k. k暂时不用直接转成b进制. (1 ...
- poj 2305(指定进制,大数取模)
题意:输入一个进制b,在输入两个基于b进制的大整数 x,y ,求x%y的b进制结果. http://162.105.81.212/JudgeOnline/problem?id=2305 函数: Str ...
- [mysql] 2进制安装和简单优化
##################################mysql 2进制安装和简单优化################################################## ...
随机推荐
- 用CSS写气泡
新学到的一个小效果 用CSS实现如下图效果,其中demo结构为:<div id="square"></div> 实现这个效果需要用到两个知识点: 1.用bo ...
- Lucene:基于Java的全文检索引擎简介
Lucene:基于Java的全文检索引擎简介 Lucene是一个基于Java的全文索引工具包. 基于Java的全文索引/检索引擎--Lucene Lucene不是一个完整的全文索引应用,而是是一个用J ...
- Eclipse启动报错[ out of memory error has occurred ]或[ An internal error occurred while showing an internal error ]
自我总结,有什么需要纠正或更好的方案,请告知,谢谢! 最近上来看到好多同学都遇到了这个问题,之前我也好几次碰到这个问题,很是恼火,什么没干,eclipse一开电脑就卡死了,后来发现不管是新打开ecli ...
- python使用上下文管理器实现sqlite3事务机制
如题,本文记录如何使用python上下文管理器的方式管理sqlite3的句柄创建和释放以及事务机制. 1.python上下文管理(with) python上下文管理(context),解决的是这样一类 ...
- ASP.NET Core 2.0 : 一. 概述
为什么要使用 ASP.NET Core? .NET Core 刚发布的时候根据介绍就有点心里痒痒, 大概看了一下没敢付诸于行动, 现在2.0发布了一段时间了, 之前对其"不稳定" ...
- MySQL操作的一些优化
1.用于不要使用select * from table xxx. 需要查询哪些列就在语句中指明,一个表结构复杂时,可能会有上百列,使用*来查询时会造成很大的浪费. 2.选择合适的属性及大小 例如 ...
- 运行所选代码生成器时出错:“预期具有协定名称 "NuGet.VisualStudio.IVsPackageInstallerServices" 的1导出 ——VS2015错误记录
在编写ASP.NET MVC控制器后,右键添加视图时,VS2015报出错误: 运行所选代码生成器时出错:“预期具有协定名称 "NuGet.VisualStudio.IVsPackageIns ...
- 剑指offer试题(PHP篇二)
6.旋转数组的最小数字 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1 ...
- chrome_options
用法 from selenium.webdriver.chrome.options import Options chorme_option=Options() chorme_option.add ...
- .NET Core使用swagger进行API接口文档管理
一.问题背景 随着技术的发展,现在的开发模式已经更多的转向了前后端分离的模式,在前后端开发的过程中,联系的方式也变成了API接口,但是目前项目中对于API的管理很多时候还是通过手工编写文档,每次的需求 ...