http://acm.hdu.edu.cn/showproblem.php?pid=5139

Problem Description
f(n)=(∏i=1nin−i+1)%1000000007
You are expected to write a program to calculate f(n) when a certain n is given.
 
Input
Multi test cases (about 100000), every case contains an integer n in a single line. 
Please process to the end of file.

[Technical Specification]
1≤n≤10000000

 
Output
For each n,output f(n) in a single line.
 
Sample Input
2
100
 
Sample Output
2
148277692
官方题解:
  1. 找规律
  2. f(1)=1
  3. f(2)=1*1*2=(1)*(1*2)=1!*2!
  4. f(3)=1*1*1*2*2*3=(1)*(1*2)*(1*2*3)=1!*2!*3!
  5.  
  6. 式子可以简化为 f(n)=∏i=1n(n!)%MOD,直接打表不行,会超内存,可以对数据进行离线处理。排好序之后从小到大暴力。ClogC+10000000 ,Ccase数目。
  7.  
  8. 题目解析:以前根本不知道题目可以这么做,又学了一样新东西,离线处理。
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <math.h>
  4. #include <queue>
  5. #include <map>
  6. #include <stdlib.h>
  7. #include <algorithm>
  8. #include <string.h>
  9. const int mod=;
  10. using namespace std;
  11. int n,tt;
  12. struct node
  13. {
  14. int id,x,sum;
  15. } q[];
  16. int cmp1(const void *a,const void *b)
  17. {
  18. struct node *aa=(struct node *)a;
  19. struct node *bb=(struct node *)b;
  20. return aa->x-bb->x;
  21. }
  22. int cmp2(const void *a,const void *b)
  23. {
  24. struct node *aa=(struct node *)a;
  25. struct node *bb=(struct node *)b;
  26. return aa->id-bb->id;
  27. }
  28. int main()
  29. {
  30. tt=;
  31. __int64 s=,s2=;
  32. while(scanf("%d",&n)!=EOF)
  33. {
  34. q[tt].id=tt;
  35. q[tt++].x=n;
  36. }
  37. qsort(q,tt,sizeof(q[]),cmp1);
  38. for(int i=,j=; i<tt; i++)
  39. {
  40. for(; j<=q[i].x; j++)
  41. {
  42. s=(s*j)%mod;
  43. s2=(s*s2)%mod;
  44. }
  45. q[i].sum=s2;
  46. }
  47. qsort(q,tt,sizeof(q[]),cmp2);
  48. for(int i=; i<tt; i++)
  49. printf("%d\n",q[i].sum);
  50. return ;
  51. }

 

 

HDU5139:Formula(找规律+离线处理)的更多相关文章

  1. LightOJ 13361336 - Sigma Function (找规律 + 唯一分解定理)

    http://lightoj.com/volume_showproblem.php?problem=1336 Sigma Function Time Limit:2000MS     Memory L ...

  2. 【春训团队赛第四场】补题 | MST上倍增 | LCA | DAG上最长路 | 思维 | 素数筛 | 找规律 | 计几 | 背包 | 并查集

    春训团队赛第四场 ID A B C D E F G H I J K L M AC O O O O O O O O O 补题 ? ? O O 传送门 题目链接(CF Gym102021) 题解链接(pd ...

  3. hdu 3951 - Coin Game(找规律)

    这道题是有规律的博弈题目,,, 所以我们只需要找出规律来就ok了 牛人用sg函数暴力找规律,菜鸟手工模拟以求规律...[牢骚] if(m>=2) { if(n<=m) {first第一口就 ...

  4. HDU 5703 Desert 水题 找规律

    已知有n个单位的水,问有几种方式把这些水喝完,每天至少喝1个单位的水,而且每天喝的水的单位为整数.看上去挺复杂要跑循环,但其实上,列举几种情况之后就会发现是找规律的题了= =都是2的n-1次方,而且这 ...

  5. hdu4952 Number Transformation (找规律)

    2014多校 第八题 1008 2014 Multi-University Training Contest 8 4952 Number Transformation Number Transform ...

  6. CF456B Fedya and Maths 找规律

    http://codeforces.com/contest/456/problem/B CF#260 div2 B Fedya and Maths Codeforces Round #260 B. F ...

  7. hdu 4731 2013成都赛区网络赛 找规律

    题意:找字串中最长回文串的最小值的串 m=2的时候暴力打表找规律,打表可以用二进制枚举

  8. 找规律 Codeforces Round #290 (Div. 2) A. Fox And Snake

    题目传送门 /* 水题 找规律输出 */ #include <cstdio> #include <iostream> #include <cstring> #inc ...

  9. 找规律 ZOJ3498 Javabeans

    Javabeans are delicious. Javaman likes to eat javabeans very much. Javaman has n boxes of javabeans. ...

随机推荐

  1. VC++ :传统剪贴板的延迟提交技术

    传统剪贴板存在的局限 传统剪贴板有一个局限性:剪贴板上的所有数据都要保存在内存上. 对于文本字符串和其它简单数据类型,可以快速有效地传递.但是,对于比较大的数据,清空剪贴板之前,数据都要占用较大的内存 ...

  2. Ubuntu 14.04 设置Android开发环境

    准备Java环境 本文仅仅安装sdk,不安装什么IDE,由于我仅仅须要命令行模式开发就可以. 首先安装openjdk 1.6.然后安装ant.这个不赘述. 下载SDK 从这里下载SDK for Lin ...

  3. centos无法联网解决方法

    1)进入 /etc/sysconfig/network-scripts/ 2)vi 或 vim 打开 ifcfg-eth0(不一定是eth0,这个自己判断了) 3)将 ONBOOT=no 改成 ONB ...

  4. 转的:burp suite小例子

    Web安全测试时经常会遇到一些蹩脚的注射点,而因各种原因利用注射又无法获取网站管理账号或拥有网站管理权限却迟迟不能upload一个shell的时候,可能会权衡一下web权限与数据库信息,哪个是我们所需 ...

  5. iOS - UIImageView - how to handle UIImage image orientation

    本文转载至 http://stackoverflow.com/questions/8915630/ios-uiimageview-how-to-handle-uiimage-image-orienta ...

  6. Android项目结构介绍

    src/存放Java源代码gen/中存放系统自动生成的配置文件Android 4.4.2下包含android.jar文件,这是一个Java归档文件,其中包含构建应用程序所需的所有的Android SD ...

  7. JAVA Comparator 接口排序用法

    java的比较器有两类,分别是Comparable接口和Comparator接口. 在为对象数组进行排序时,比较器的作用非常明显,首先来讲解Comparable接口. 让需要进行排序的对象实现Comp ...

  8. linux 下配置vncserver

    vncserver是使用非常方便和广泛的远程桌面服务,配置也相对简单. 下面记录了在centos系统上进行配置vncserver的过程. 安装 查看centos下是否已经安装了vncserver rp ...

  9. LeetCode——Summary Ranges

    Description: Given a sorted integer array without duplicates, return the summary of its ranges. For ...

  10. 图的建立(邻接矩阵)+深度优先遍历+广度优先遍历+Prim算法构造最小生成树(Java语言描述)

    主要参考资料:数据结构(C语言版)严蔚敏   ,http://blog.chinaunix.net/uid-25324849-id-2182922.html   代码测试通过. package 图的建 ...