题目链接: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. 每天一条linux命令——halt

    halt命令用来关闭正在运行的Linux操作系统.halt命令会先检测系统的runlevel,若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统. 语法: halt(选项) ...

  2. ceph入门学习链接

    https://tobegit3hub1.gitbooks.io/ceph_from_scratch/content/introduction/component.html

  3. 《sort命令的k选项大讨论》-linux命令五分钟系列之二十七

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

  4. php checkbox复选框值的获取与checkbox默认值输出方法

    php获取 checkbox复选框值的方法,checkbox在php读取值时要用数组形式哦,我们读取这些值用php post获取是以一个array形式哦. php获取 checkbox复选框值的方法 ...

  5. CentOS系统安全配置

    http://down.51cto.com/data/318797 http://www.centos.bz/2011/07/centos-system-security-configure/ htt ...

  6. Omnithreadlibary学习(1)-异步执行

    program main; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, OtlParallel; begin Parallel.Async( ...

  7. 导航 -MapKit - 获取路线信息绘制导航路线

    #import "PPViewController.h" #import <MapKit/MapKit.h> #import "PPAnnotation.h& ...

  8. nginx提示No input file specified怎么办

    用了网上提供的各种方法都不行,即便html能正常打开,php文件依然有问题.而后继续尝试了修改权限 chown -vR www:www /folder 功能都正常. nginx.conf 的 user ...

  9. python学习之---函数进阶

    一,递归函数: 做程序应该都知道,在一个函数的内部还可以调用其它函数,这叫函数的调用,但是有一种特殊的情况,在一个函数内部对自身函数的调用,我们成这为函数的递归调用. 在此,使用一个家喻户晓的例子来演 ...

  10. bzoj 1845: [Cqoi2005] 三角形面积并 扫描线

    1845: [Cqoi2005] 三角形面积并 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 848  Solved: 206[Submit][Statu ...