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%的利润 ...
随机推荐
- 源码编译安装 screen
本文转自:http://blog.163.com/oracle_wwf/blog/static/213030127201211191481101/ [root@web1 soft]# wget ftp ...
- MYSQL 连接数据库命令收藏
一.MySQL 连接本地数据库,用户名为“root”,密码“123”(注意:“-p”和“123” 之间不能有空格) C:\>mysql -h localhost -u root -p123 二. ...
- XMAL语法系列之-(2)---WPF控件继承图
WPF控件继承图 1 FrameworkElement 1.1 Panel(面板类元素) 1.1.1 Canvas 1.1.2 DockPanel 1.1.3 Grid 1.1.4 TabPanel ...
- godaddy空间的sql server数据库没办法insert中文
原来的代码: use string007 from sysobjects where id = object_id('K_V_TEST') and type = 'U') drop table K_V ...
- Go - template 常用方法详解 及 注意事项
Go template包下面有两个函数可以创建模板实例 func New(name string) *Template func ParseFiles(filenames ...string) (*T ...
- Mac下的串口通信-ORSSerialPort
================================2015/11/05======================================= 最近在工作中遇到有关Mac下串口通信 ...
- androids-addjavascriptinterface-equivalent-in-ios
http://stackoverflow.com/questions/7103159/androids-addjavascriptinterface-equivalent-in-ios
- post 之checkbox 未被选中解决方法
第一种方法: http://cnn237111.blog.51cto.com/2359144/1293812 第二种方法(推荐): http://blog.csdn.net/xyanghomepage ...
- Hello 畅连·西瓜 帮助与更新
无感认证很好用,软件不再更新, 感谢每一位朋友的陪伴,谢谢! (2016.12.15) 百度云:点击下载 ------------旧版更新日志------------- Hello 畅连·西瓜 官网: ...
- Java 7 Concurrency Cookbook 翻译 第一章 线程管理之二
三.中断一个线程 一个拥有多个线程的Java程序要结束,需要满足两个条件之一:一是所有的非后台线程都执行结束了:二是某个线程执行了 System.exit() 方法.当你想要终结一个运行中的Java程 ...