Series 1 java秒组合数

                        Series 1

举几个例子发现,  系数中间对称,很容易想到组合数 c(n,m)==c[n,n-m).此题就是高精度求组合数,java秒之。

time:1825ms   ,接近时限,如果n还稍微大一点就超时。

 1 import java.math.*;
 2 import java.util.*;
 3 import java.io.*;
 4 import java.text.*;
 5
 6 public class Main
 7 {
 8     static int MS=3005;
 9     public static void main(String[] args)
10     {
11         Scanner cin=new Scanner(new BufferedInputStream(System.in));
12         int[] a=new int[MS];
13         int T,n;
14         T=cin.nextInt();
15         while(T-->0)
16         {
17             n=cin.nextInt();
18             for(int i=0;i<n;i++)
19                 a[i]=cin.nextInt();
20             BigInteger ans=BigInteger.valueOf(a[n-1]);
21             BigInteger res=BigInteger.ONE;
22             BigInteger flag=BigInteger.valueOf(-1);
23             BigInteger t=BigInteger.ONE;
24             n=n-1;
25             for(int i=1,j=n;i<=n;i++,j--)
26             {
27                 res=res.multiply(BigInteger.valueOf(j)).divide(BigInteger.valueOf(i));
28                 t=res.multiply(flag).multiply(BigInteger.valueOf(a[j-1]));
29                 flag=flag.multiply(BigInteger.valueOf(-1));
30                 ans=ans.add(t);
31             }
32             System.out.println(ans);
33         }
34         cin.close();
35     }
36 }
时间: 2024-10-04 00:32:21

Series 1 java秒组合数的相关文章

HDU 4927 Series 1 java大数

java mle前会wa 或者 t 这种事我会乱说? import java.math.*; import java.util.*; import java.io.*; public class Main { BigInteger[] a = new BigInteger[3007]; public void work() { int T; T = cin.nextInt(); while (T-- > 0) { int n; n = cin.nextInt(); for (int i = 0;

【JAVA秒会技术之秒杀面试官】秒杀Java面试官——集合篇(一)

[JAVA秒会技术之秒杀面试官]秒杀Java面试官--集合篇(一) [JAVA秒会技术之秒杀面试官]JavaEE常见面试题(三) http://blog.csdn.net/qq296398300/article/category/6876287

Octal Fractions java秒 C++

Octal Fractions 题目抽象:   将八进制小数转换成十进制小树.小数的为数很大. 可以用java  中的BigDeciaml 秒掉.  time:297ms 1 import java.math.*; 2 import java.util.*; 3 import java.io.*; 4 import java.text.*; 5 6 public class Main 7 { 8 static int MS=3005; 9 public static void main(Stri

字串数 排练组合(阶乘) java秒

字串数 题目抽象:给定若干字母和它们相应的个数,计算一共可以组成多少个不同的字符串. 1 import java.math.*; 2 import java.util.*; 3 import java.io.*; 4 import java.text.*; 5 6 public class Main 7 { 8 9 public static void main(String[] args) 10 { 11 Scanner cin=new Scanner(new BufferedInputStr

ACdream 1007 a+b 快速幂 java秒啊

a + b ( sigma  (ai^x)  )  %  mod 1 import java.util.*; 2 import java.math.*; 3 import java.io.*; 4 public class Main 5 { 6 static BigInteger mod=new BigInteger("10000000007"); 7 public static void main(String[] args) 8 { 9 // 对于大量输入,下面方式可能会快一些.

【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(一)

1.Struts2中,Action通过什么方式获取用户从页面输入的数据,又是通过什么方法把数据传给视图层显示的? 答:(1)Action从页面获取数据的方式有三种: ①通过Action属性接收参数:(例:${pageContext.request.contextPath}/***.action? id=xxxx) ②通过域模型获取参数:(例:ServletActionContext.getRequest().getParameter(arg0)) ③通过模型驱动获取参数(例:extends Mo

【JAVA秒会技术之秒杀面试官】JavaSE常见面试题(二)

21.在Java中,如何跳出当前的多重嵌套循环? 答:在最外层循环前加一个标记如A,然后用break A;可以跳出多重循环.(Java中支持带标签的break和continue语句,作用有点类似于C和C++中的goto语句,但是就像要避免使用goto一样,应该避免使用带标签的break和continue,因为它不会让你的程序变得更优雅,很多时候甚至有相反的作用,所以这种语法其实不知道更好) 22.构造器(constructor)是否可被重写(override)? 答:构造器不能被继承,因此不能被

【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(五)

51.事务的特性? 答:①原子性(Atomicity) 指事务是一个不可分割的工作单位,事务中的操作要么全都发生,要么全不发生: ②一致性(Consistency) 事务前后数据的完成性必须保持一致:(例:转账前后的,两个人的金额总数是不变的) ③隔离性(Isolation) 指多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务干扰,多个并发事务之间要项目隔离: ④持久性(Durability) 指一个事务一旦被提交,它对数据库中数据的改变是永久性的,接下来即使数据库发生故障,也不应该

Java NIO Tutorial

Java Nio 1 Java NIO Tutorial 2 Java NIO Overview 3 Java NIO Channel 4 Java NIO Buffer 5 Java NIO Scatter / Gather 6 Java NIO Channel to Channel Transfers 7 Java NIO Selector 8 Java NIO FileChannel 9 Java NIO SocketChannel 10 Java NIO ServerSocketChan