题目链接:http://codeforces.com/contest/294/problem/C

代码:

import java.util.*;
import java.math.*; public class Main {
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
BigInteger[] fir;
fir = new BigInteger[1050];
fir[0] = fir[0].ONE;
for(int i=1; i<=1000; i++)
fir[i] = fir[i-1].multiply(BigInteger.valueOf(i));
BigInteger[] sec;
sec = new BigInteger[1050];
sec[0] = sec[0].ONE;
for(int i=1; i<=1000; i++)
sec[i] = sec[i-1].multiply(BigInteger.valueOf(2)); int n,m;
boolean flag[];
flag = new boolean[1050];
for(int i=0; i<=1000; i++)
flag[i] = false; n = cin.nextInt();
m = cin.nextInt(); int last = 0;
int sta[];
sta = new int[1050];
int cnt = 0; for(int i=1; i<=m; i++)
{
int temp;
temp = cin.nextInt();
flag[temp] = true;
} for(int i=1; i<=n; i++)
{
if(flag[i])
{
if(i-1-last > 0)
{
sta[cnt++] = i - 1 - last;
}
last = i;
}
if(i == n && flag[i] == false)
{
if(i-last > 0)
{
sta[cnt++] = i- last;
}
}
}
BigInteger ans;
ans = fir[n-m]; for(int i=0; i<cnt; i++)
{
int k = sta[i];
ans = ans.divide(fir[k]);
if((i == 0 && !flag[1])||(i == cnt-1 && !flag[n]))
continue; ans = ans.multiply(sec[k-1]);
} ans = ans.mod(BigInteger.valueOf(1000000007));
System.out.println(ans);
}
}

CF 294C(Java大数做计数)的更多相关文章

  1. java大数 斐波那契数列

    java大数做斐波那契数列:  思路:1.       2.可以用数组存着 import java.math.BigInteger; import java.util.Scanner; public ...

  2. 多校第五场 归并排序+暴力矩阵乘+模拟+java大数&amp;记忆化递归

    HDU 4911 Inversion 考点:归并排序 思路:这题呀比赛的时候忘了知道能够用归并排序算出逆序数,可是忘了归并排序的实质了.然后不会做-- 由于看到题上说是相邻的两个数才干交换的时候.感觉 ...

  3. Java 大数、高精度模板

    介绍: java中用于操作大数的类主要有两个,一个是BigInteger,代表大整数类用于对大整数进行操作,另一个是BigDecimal,代表高精度类,用于对比较大或精度比较高的浮点型数据进行操作.因 ...

  4. java 大数计算

    这几天做了几道用大数的题,发现java来做大数运算十分方便.对acmer来说是十分实用的 1.valueOf(parament); 将参数转换为制定的类型 比如 int a=3; BigInteger ...

  5. JAVA大数类

    JAVA大数类api http://man.ddvip.com/program/java_api_zh/java/math/BigInteger.html#method_summary 不仅仅只能查J ...

  6. 收藏的一段关于java大数运算的代码

    收藏的一段关于java大数运算的代码: package study_02.number; import java.math.BigDecimal; import java.math.BigIntege ...

  7. 1873 初中的算术(java大数)

    1873 初中的算术 1 秒 131,072 KB 10 分 2 级题   Noder现在上初三了,正在开始复习中考.他每天要计算型如 (a× a× a× ⋯× a) ...

  8. Java大数——快速矩阵幂

    Java大数——快速矩阵幂 今天做了一道水题,尽管是水题,但是也没做出来.最后问了一下ChenJ大佬,才慢慢的改对,生无可恋了.... 题目描述: 给a,b,c三个数字,求a的b次幂对c取余. 数据范 ...

  9. java大数模板

    java 大数计算   这几天做了几道用大数的题,发现java来做大数运算十分方便.对acmer来说是十分实用的 1.valueOf(parament); 将参数转换为制定的类型 比如 int a=3 ...

随机推荐

  1. erlang 编程指南 第三章-顺序编程 课后练习

    1. sum(3) => 6; sum(1,3) => 6; sum(6,6) => 6; sum(N) when is_integer(N) -> sum_acc(N,0); ...

  2. epoll和select区别

    先说下本文框架,先是问题引出,然后概括两个机制的区别和联系,最后介绍每个接口的用法 一.问题引出 联系区别 问题的引出,当需要读两个以上的I/O的时候,如果使用阻塞式的I/O,那么可能长时间的阻塞在一 ...

  3. 怎样清除td和input之间空隙

    <style> input {background:red;border:none;height:30px;margin:0px} td {background-color:blue;pa ...

  4. makefile debug

    1. 使用warning指令 warning 是个不错的命令,可以打印出消息,来判断makefile执行的流程 2.使用ifeq ifneq 当makefile被多次调用到的时候,如果都输出warni ...

  5. js带缩略图的图片切换效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. Docker的安装及简单使用

    1.  Docker的安装 (这里的“安装docker”其实就是安装Docker Engine) $ sudo apt-get intasll docker.io note: apt-get是ubun ...

  7. 堆排序 海量数据求前N大的值

    最(大)小堆的性质: (1)是一颗完全二叉树,遵循完全二叉树的所有性质. (2)父节点的键值(大于)小于等于子节点的键值 堆的存储 一般都用数组来表示堆,i结点的父结点下标就为(i – 1) / 2. ...

  8. java通过jni方式获取硬盘序列号(windows,linux)

    linux系统java通过jni方式获取硬盘序列号 http://blog.csdn.net/starter110/article/details/8186788 使用jni在windows下读取硬盘 ...

  9. 在安全层面,企业如何获得更好的投资回报率 ROI?

    前言 任何企业对投资都有回报的要求,回报可能是直接的「利润」,达到短期.长期的目标,或者通过投资减少损失.因此每个项目的决策者在每笔投资前都要衡量 ROI,证明该投资能达到的效果和收益,以便在项目结束 ...

  10. OA学习笔记-006-SPRING2.5与hibernate3.5整合

    一.为什么要整合 1,管理SessionFactory实例(只需要一个) 2,声明式事务管理 spirng的作用 IOC 管理对象.. AOP 事务管理.. 二.整合步骤 1.整合sessionFac ...