pid=4927">Series 1

大意:

题意不好翻译,英文看懂也不是非常麻烦,就不翻译了。

Problem Description
Let A be an integral series {A1, A2, . . . , An}.



The zero-order series of A is A itself.



The first-order series of A is {B1, B2, . . . , Bn-1},where Bi = Ai+1 - Ai.



The ith-order series of A is the first-order series of its (i - 1)th-order series (2<=i<=n - 1).



Obviously, the (n - 1)th-order series of A is a single integer. Given A, figure out that integer.
 
Input
The input consists of several test cases. The first line of input gives the number of test cases T (T<=10).



For each test case:

The first line contains a single integer n(1<=n<=3000), which denotes the length of series A.

The second line consists of n integers, describing A1, A2, . . . , An. (0<=Ai<=105)
 
Output
For each test case, output the required integer in a line.
 
Sample Input
2 3 1 2 3 4 1 5 7 2
 
Sample Output
0 -5
 
 
思路:
比赛中楠姐非常快就推出来公式了,想把杨辉三角预处理出来,然后发现BigInteger大小爆内存了。。

。非常无语

然后又想在暴力的基础上去优化。然后一直T到死。

。。 比赛结束也没搞出来。

赛后才知道。杨辉三角是能够直接用组合公式推出来的。。。
杨辉三角的第n行的第m个数为组合数c[n-1][m-1]。
应用c[n][m] = c[n][m-1]*(n-m+1)/m,就能够高速递推出第n行的数,这样既避免了打表会出现的爆内存。也省去了暴力好多的时间。。。。

还是太年轻  哎。。。


	import java.io.*;
import java.math.*;
import java.util.*;
public class Main { static BigInteger coe[][] = new BigInteger [3010][3010];
public static void main(String[] args) throws IOException{
Scanner cin = new Scanner(System.in);
BigInteger []a = new BigInteger[3010];
BigInteger []c = new BigInteger[3010];
int T;
T = cin.nextInt();
while(T-- > 0){
int n;
n = cin.nextInt();
for(int i = 1; i <= n; ++i){
a[i] = cin.nextBigInteger();
}
BigInteger ans = BigInteger.ZERO;
c[0] = BigInteger.ONE;
ans = ans.add(c[0].multiply(a[n]));
int t = -1;
for(int i = 1; i < n; ++i){
BigInteger t1 = BigInteger.valueOf(n).subtract(BigInteger.valueOf(i));
BigInteger t2 = BigInteger.valueOf(i);
c[i] = c[i-1].multiply(t1).divide(t2);
ans = ans.add(c[i].multiply(a[n-i]).multiply(BigInteger.valueOf(t)));
t *= -1;
}
System.out.println(ans);
} }
}

HDU 4927 Series 1 ( 组合+高精度)的更多相关文章

  1. HDU 4927 Series 1(高精度+杨辉三角)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4927 解题报告:对于n,结果如下: C(0,n-1) *A[n] - C(1,n-1) * A[n-1 ...

  2. HDU 4927 Series 1(推理+大数)

    HDU 4927 Series 1 题目链接 题意:给定一个序列,要求不断求差值序列.直到剩一个,输出这个数字 思路:因为有高精度一步.所以要推理一下公式,事实上纸上模拟一下非常easy推出公式就是一 ...

  3. 2014多校第六场 1007 || HDU 4927 Series 1(杨辉三角组合数)

    题目链接 题意 : n个数,每操作一次就变成n-1个数,最后变成一个数,输出这个数,操作是指后一个数减前一个数得到的数写下来. 思路 : 找出几个数,算得时候先不要算出来,用式子代替,例如: 1 2 ...

  4. 多校第六场 HDU 4927 JAVA大数类+模拟

    HDU 4927 −ai,直到序列长度为1.输出最后的数. 思路:这题实在是太晕了,比赛的时候搞了四个小时,从T到WA,唉--对算组合还是不太了解啊.如今对组合算比較什么了-- import java ...

  5. hdu 4927 组合+公式

    http://acm.hdu.edu.cn/showproblem.php?pid=4927 给定一个长度为n的序列a,每次生成一个新的序列,长度为n-1,新序列b中bi=ai+1−ai,直到序列长度 ...

  6. 【HDU - 4927】Series 1

    BUPT2017 wintertraining(15) #5I 题意 输出序列A[1..n]的第n-1阶差分(一个整数). 题解 观察可知答案就是 \[ \sum_{i=0}^{n-1} {(-1)^ ...

  7. HDU 4927

    http://acm.hdu.edu.cn/showproblem.php?pid=4927 直接模拟会超时,要在纸上写写推公式 A[n]*C(0,n-1)  - A[n-1]*C(1,n-1) + ...

  8. hdu 1316 How many Fibs?(高精度斐波那契数)

    //  大数继续 Problem Description Recall the definition of the Fibonacci numbers:  f1 := 1  f2 := 2  fn : ...

  9. hdu 1715 大菲波数(高精度数)

    Problem Description Fibonacci数列,定义如下: f(1)=f(2)=1 f(n)=f(n-1)+f(n-2) n>=3. 计算第n项Fibonacci数值. Inpu ...

随机推荐

  1. VS2010安装HTML5插件

    步骤: 1. 下载 插件 2.拷贝文件里面德尔html_5.xsd到 D:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Packa ...

  2. 不用call和apply方法模拟实现ES5的bind方法

    本文首发我的个人博客:前端小密圈,评论交流送1024邀请码,嘿嘿嘿

  3. WPF, WPF Browser Application(XBAP) 和 Silverlight 的区别

    由图可见,XBAP与WPF的区别是“受限的”:Silverlight与XBAP的区别是,不需要.NET Framework. 上星期與以前的同事爭論著究竟使用XBAP來開發XX用戶端 (為筆者之前開發 ...

  4. Redis 3.0版本启动时出现警告的解决办法

    原文:http://m.blog.csdn.net/article/details?id=50864933 Redis 3.0.7版本启动时出现警告的解决办法 发表于2016/3/12 12:52:4 ...

  5. TOP命令监视系统任务及掩码umask的作用

    top 命令使用方法及參数. top 选择參数 參数: -b  以批量模式执行.但不能接受命令行输入: -c 显示命令行,而不不过命令名. -d N  显示两次刷新时间的间隔,比方 -d 5,表示两次 ...

  6. matlab 图像常用函数

    Canny function [ canny ] = canny( rgb ) temp=rgb2gray(rgb); canny=edge(temp,'canny'); end 灰度 temp=rg ...

  7. 《CUDA并行程序设计:GPU编程指南》

    <CUDA并行程序设计:GPU编程指南> 基本信息 原书名:CUDA Programming:A Developer’s Guide to Parallel Computing with ...

  8. [Android Studio] Android Studio如何删除module(转载)

    转载地址:http://blog.csdn.net/hyr83960944/article/details/37519299 当你想在Android Studio中删除某个module时,大家习惯性的 ...

  9. Ripple 水波纹效果

    背景+波纹 对于有边界限制的Ripple,我们就需要给他提供一个范围,即添加一个item标签. 如果在一个ripple标签中,添加一个item标签,在item中添加如下属性: [android:dra ...

  10. javascript刷新父页面方法总结

    用iframe.弹出子页面刷新父页面iframe <script language=JavaScript> parent.location.reload(); </script> ...