BestCoder21 1002.Formula 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5139
题目意思:给出一个数 n,求出 f(n)。

可以发现有以下规律:
f(1) = 1!
f(2) = 1! * 2!
f(3) = 1! * 2! * 3!
f(n) = 1! * 2! * 3! *....... * (n-1)! * n!
我一开始对题解中的 直接打表超内存 不太理解,于是就实践了下:
超内存版本(就是直接算 f[n],当输入n的时候,输出 f[n]):
(原来开 大小为 1e7 的数组会这样滴,长见识了~~)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; const int MOD = 1e9 + ;
const int maxn = 1e7 + ; int f[maxn]; int main()
{
int p = , s = ;
for (int i = , j = ; i <= maxn; i++)
{
while (j <= i)
{
p = 1ll * p * j % MOD;
s = 1ll * s * p % MOD;
j++;
}
f[i] = s;
}
int n;
while (scanf("%d", &n) != EOF)
printf("%d\n", f[n]);
return ;
}
所以就要离线处理了,这位大哥讲得比较好。
http://blog.csdn.net/sr_19930829/article/details/41785767
即:对数据统一输入,统一处理,最后统一输出。
而为了防止超内存,开 1e5 大小的数组保存答案就可以了,因为题目中说了 cases 大约为100000。
输入完之后就要从小到大排序了,这样的好处能保证每个阶乘只计算一遍。而为了对应输入的顺序,需要 pair 数组的second 来保存序号。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; const int MOD = 1e9 + ;
const int maxn = 1e5 + ; pair<int, int> pii[maxn];
int ans[maxn]; int main()
{
int cnt = ;
while (scanf("%d", &pii[cnt].first) != EOF)
{
pii[cnt].second = cnt;
cnt++;
} sort(pii, pii+cnt);
int p = , s = ;
for (int i = , j = ; i < cnt; i++)
{
while (j <= pii[i].first)
{
p = 1ll * p * j % MOD;
s = 1ll * s * p % MOD;
j++;
}
ans[pii[i].second] = s;
}
for (int i = ; i < cnt; i++)
printf("%d\n", ans[i]);
return ;
}
BestCoder21 1002.Formula 解题报告的更多相关文章
- BestCoder36 1002.Gunner 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5199 题目意思:给出鸟在树上的高度,以及射击到的高度,问每次射击能射中鸟的数量 用 vector 里面 ...
- 【九度OJ】题目1176:树查找 解题报告
[九度OJ]题目1176:树查找 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1176 题目描述: 有一棵树,输出某一深度的所有节点 ...
- 【九度OJ】题目1445:How Many Tables 解题报告
[九度OJ]题目1445:How Many Tables 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1445 题目描述: ...
- 【九度OJ】题目1109:连通图 解题报告
[九度OJ]题目1109:连通图 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1109 题目描述: 给定一个无向图和其中的 ...
- CH Round #56 - 国庆节欢乐赛解题报告
最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...
- 二模13day1解题报告
二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...
- BZOJ 1051 最受欢迎的牛 解题报告
题目直接摆在这里! 1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4438 Solved: 2353[S ...
- 习题:codevs 2822 爱在心中 解题报告
这次的解题报告是有关tarjan算法的一道思维量比较大的题目(真的是原创文章,希望管理员不要再把文章移出首页). 这道题蒟蒻以前做过,但是今天由于要复习tarjan算法,于是就看到codevs分类强联 ...
- 习题:codevs 1035 火车停留解题报告
本蒟蒻又来写解题报告了.这次的题目是codevs 1035 火车停留. 题目大意就是给m个火车的到达时间.停留时间和车载货物的价值,车站有n个车道,而火车停留一次车站就会从车载货物价值中获得1%的利润 ...
随机推荐
- $(document).ready(){}、$(fucntion(){})、(function(){})(jQuery)onload()的区别
1.首先说JQuery的几个写法 $(function(){ //do someting }); $(document).ready(function(){ //do so ...
- Cocoa是什么?
一.什么是Cocoa ①Cocoa的来源 早些年,苹果公司启动了Copland计划,致力于开发出自己的操作系统,可惜后来Copland计划逐渐的失控了,苹果公司最终决定放弃开发,转向从别的公司购买下 ...
- ecshop之transport和jquery冲突之完美解决方案
众所周知:ecshop的transport.js文件和Jquery是冲突的,两个文件不能同时调用,现给出以下完美解决方案:原因分析:在transport.js文件中,大概 580行到590行之间,这个 ...
- 关于ext3,ext4,xfs和btrfs文件系统性能对比
关于ext3,ext4,xfs和btrfs文件系统性能对比 应为原文:http://www.ilsistemista.net/index.php/linux-a-unix/6-linux-filesy ...
- Unity3D客户端和Java服务端使用Protobuf
转自:http://blog.csdn.net/kakashi8841/article/details/17334493 前几天有位网友问我关于Unity3D里面使用Protobuf的方法,一时有事拖 ...
- cocos2d事件处理机制之我见
cocos2d是使用pyglet事件框架来处理事件的. 其中,包括分发器(发射器)和监听器两部分.下面形象的来打个比方. 这个机制就好比一把枪,三步:扣扳机(触发),上弹(注册),给子弹上***(这个 ...
- OpenCV进阶之路:一个简化的视频摘要程序
一.前言 视频摘要又称视频浓缩,是对视频内容的一个简单概括,先通过运动目标分析,提取运动目标,然后对各个目标的运动轨迹进行分析,将不同的目标拼接到一个共同的背景场景中,并将它们以某种方式进行组合.视频 ...
- 32 GroupSock(AddressPortLookupTable)——live555源码阅读(四)网络
32 GroupSock(AddressPortLookupTable)——live555源码阅读(四)网络 32 GroupSock(AddressPortLookupTable)——live555 ...
- 13 HashTable抽象哈希表类——Live555源码阅读(一)基本组件类
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso ...
- 一个IP多个https站点配置
在一台主机上放置一个https网站,究竟该怎么配置?对于IIS和Apache以及Nginx等不同的服务器,方法是不同的,网上有很多教程,在此就不再赘述了. 至于一台主机,如何配置多个https网站呢? ...