此题可以找到规律f(n) = 1! * 2! *...*n!, 如果直接打表的话,由于n比较大(10000000),所以会超内存,这时候就要用到离线处理数据,就是先把数据存起来,到最后在暴力一遍求解就行了,代码如下

代码一(超内存):

  1. #include <stdio.h>
  2.  
  3. const long long mod = ;
  4. const int N = ;
  5. long long a[N];
  6.  
  7. int main()
  8. {
  9. a[] = a[] = ;
  10. for (int i = ; i < N; i++)
  11. {
  12. a[i] = a[i - ] * i % mod;
  13. }
  14.  
  15. for (int i = ; i < N; i++)
  16. {
  17. a[i] = a[i - ] * a[i] % mod;
  18. }
  19. int n;
  20. while (~scanf("%d", &n))
  21. {
  22. printf("%I64d\n", a[n]);
  23. }
  24. return ;
  25. }

代码二(AC)

  1. #include <stdio.h>
  2. #include <vector>
  3. #include <map>
  4. const long long mod = ;
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9. int n;
  10. vector<int> a;
  11. map<int, long long> vis;
  12. while (scanf("%d", &n) != EOF)
  13. {
  14. a.push_back(n);
  15. vis[n] = -;
  16. }
  17. long long prep = , nowp, prea = , nowa;
  18. for (int i = ; i <= ; i++)//离线算法
  19. {
  20. nowp = prep * i % mod;//相当于求阶乘
  21. prep = nowp;
  22. nowa = nowp * prea % mod;//求n个阶乘的乘积
  23. prea = nowa;
  24. if (vis.count(i))
  25. {
  26. vis[i] = nowa;
  27. }
  28. }
  29. for (int i = ; i < a.size(); i++)//暴力一遍
  30. {
  31.  
  32. printf("%I64d\n", vis[a[i]]);
  33. }
  34. return ;
  35. }

离线算法确实挺神奇的,要深刻理解才能做题

HDU 5139数据离线处理的更多相关文章

  1. hdu 5139 数据的离线处理

    所谓的数据离线处理,就是将所有的输入数据全部读入后,在进行统一的操作,这样当然有好处,比如让你算好多数的阶层,但是输入的每个数是没有顺序的,其实跟可以线性的解决,但是由于没有顺序的输入,这样处理的话复 ...

  2. HDU 5139 Formula --离线处理

    题意就不说了,求公式. 解法: 稍加推导能够得出 : f(n) = n! * f(n-1) , 即其实是求: ∏(n!)  ,盲目地存下来是不行的,这时候看见条件: 数据组数 <= 100000 ...

  3. HDU5200 数据离线处理

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5200 ,数据离线处理. 这是BestCoder Round #36的C题,比赛时自己用线段树做,姿势不 ...

  4. ODAC(V9.5.15) 学习笔记(十五)数据离线模式

    数据离线模式(Disconnected Mode)是指数据库只有在需要的时候才连接,数据的处理放在客户端内存缓冲区中完成.这样做最大的好处是减少了网络资源依赖,对数据库服务器的资源开销和压力也减少.如 ...

  5. IOS开发笔记(4)数据离线缓存与读取

    IOS开发笔记(4)数据离线缓存与读取 分类: IOS学习2012-12-06 16:30 7082人阅读 评论(0) 收藏 举报 iosiOSIOS 方法一:一般将服务器第一次返回的数据保存在沙盒里 ...

  6. hdu 5139(离线处理+离散化下标)

    Formula Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  7. hdu 5139 Formula

    http://acm.hdu.edu.cn/showproblem.php?pid=5139 思路:这道题要先找规律,f(n)=n!*(n-1)!*(n-2)!.....1!;  不能直接打表,而是离 ...

  8. hdu 5441 Travel 离线带权并查集

    Travel Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5441 De ...

  9. hdu 4940 数据太水...

    http://acm.hdu.edu.cn/showproblem.php?pid=4940 给出一个有向强连通图,每条边有两个值分别是破坏该边的代价和把该边建成无向边的代价(建立无向边的前提是删除该 ...

随机推荐

  1. 【COGS 56】质数取石子

    [问题描述] DD 和 MM 正在玩取石子游戏.他们的游戏规则是这样的:桌上有若干石子,DD 先取,轮流取,每次必须取质数个.如果某一时刻某一方无法从桌上的石子中取质数个,比如说剩下 0 个或 1 个 ...

  2. Java简介(4)-关键字

    abstract assert boolean break byte byte case catch char class const continue default do-while double ...

  3. 离线安装maven

    maven离线安装 1.在eclipse根目录下新建两个文件夹,links和myplugins,myplugins文件名可以自定义 2.下载maven http://pan.baidu.com/s/1 ...

  4. spring mvc 自定义Handlermapping

    上次大概写了个可以解决velocity 多视图的东西. 但是实际运用过程中又到处找了些资料看了下.这里 小计下: DispatcherServlet解析过程: ..1..HandlerMapping. ...

  5. 朗科U903 低级格式化后,量产错误:read onlypage (控制器芯片群联2251-03)的解决方案

    1. 下载群联量产工作 MPALL v3.63.0D for Netac 2. 在Setting页面,选择如下(红色矩形选中): 3. 然后执行量产,量产完成后,重新插拔就能看到U盘.

  6. TextView 设置超过几行后显示省略号

    android:lines="5" android:ellipsize="end"

  7. SCALA表达示简例

    作了解,感觉比一般的差距有点大哟. package com.hengheng.scala class HelloScala { } object HelloScala { def main(args: ...

  8. UNDO 100%

    另外查了下v$undostat,发现begin_time已经很久没有改变, BEGIN_TIME           END_TIME             MAXQUERYLEN MAXCONCU ...

  9. C++ BigInteger 大整数类模板(转)

    #include <deque> #include <vector> #include <iostream> #include <string> #in ...

  10. css+div 布局遇到的小常识

    /根目录../上层目录举例如下: 在photo.css文件中写入: div.ls{ background:url(../photo/framels.jpg) no-repeat left; }div. ...