差分序列
2015-10-09 08:32
260 查看
差分序列 0阶差分序列(就是序列本生): h0,h1,h2,···,hn,··· 1阶差分(△hn = hn+1 - hn): △h0,△h1,△h2,···,△hn,··· ······ 定理一: 设序列的通项公式是n的p次多项式,即 hn = a(p)*n^p + a(p-1)*n^p-1 + ··· + a1*n + a0 则对所有△(p+1)hn = 0. 定理二: 差分表的第0条对角线等于 c0,c1,c2,···,cp,0,0,0,···, 其中cp != 0 的序列的通项公式满足 hn = c0(n,0) + c1(n,1)+c2(n,2)+···+cp(n,p) 定理三: 差分表的第0条对角线等于 c0,c1,c2,···,cp,0,0,0,···, 其中cp != 0 则 k(0-n)∑hk = c0(n+1,1) + c1(n+2,2) + ··· + cp(n+1,p+1) 1.给出了一个数列的前若干项,要求推测后面的项 int h[MAXN][MAXN]; // 存放差分序列,h[i][MAXN]为i阶差分 int n; // 前n个数 int m; // 要得到的后n个数 //计算差分序列 void CalDifferentSequence() { for(int i = 1; i < n; ++i) for(int j = 0; i+j < n; ++j) h[i][j] = h[i-1][j+1] - h[i-1][j]; for(int i = 1; i <= m; ++i) h[n-1][i] = h[n-1][0]; for(int i = n-2; i >= 0; --i) for(int j = 0; j < m; ++j) h[i][n-i+j] = h[i][n-i+j-1] + h[i+1][n-i+j-1]; }
POJ 2515 Birthday Cake
题意:给定m和n,求∑(i^m) (1<= i <= n),1 <= n <= 10 ^ 41 and 3 <= m <= 100。
思路:n很大m很小可以直接利用定理三求解。
code:
import java.math.BigInteger; import java.util.Scanner; public class Main { public final int MAXN = 105; Scanner cin = new Scanner(System.in); public BigInteger c[] = new BigInteger[MAXN]; BigInteger h[][] = new BigInteger[MAXN][MAXN]; BigInteger N; int M; void init() { c[1] = N; for(int i = 2; i <= M + 1; ++i) { c[i] = c[i-1].multiply(N.subtract(BigInteger.valueOf(i-1))).divide(BigInteger.valueOf(i)); } } void solve() { int T = cin.nextInt(); while (T-- > 0) { N = cin.nextBigInteger(); N = N.add(BigInteger.ONE); M = cin.nextInt(); init(); for (int i = 0; i <= M; ++i) { h[0][i] = BigInteger.valueOf(i).pow(M); } for (int i = 1; i <= M; ++i) { for (int j = 0; j <= M - i; ++j) { h[i][j] = h[i - 1][j + 1].subtract(h[i - 1][j]); } } BigInteger ans = BigInteger.ZERO; for (int i = 0; i <= M; ++i) { ans = ans.add(c[i+1].multiply(h[i][0])); } System.out.println(ans); } cin.close(); } public static void main(String[] args) { new Main().solve(); } }
相关文章推荐
- 第6周项目3-括号的匹配
- 第四周 多项式求和
- 第六周 项目2-建立链栈算法库
- VS2010+2.4.11的persistence.cpp line 5008 错误
- open cv 安装篇
- 项目4 -- 数制转换
- MFC如何使控件大小随着对话框大小自动调整
- 第六周上机实践—项目3—括号的匹配
- 第三周,项目二
- 网站收藏
- 天下没有不会这么回事!不会就学——北漂18年(28)
- 第四周实践项目6-多项式求和
- 第六周 项目1-建立顺序栈算法库
- 第三周项目4 顺序表的应用
- 第六周—项目3 - 括号的匹配
- 第六周 项目1-建立顺序栈算法库
- 第四周项目3-单链表应用(1)
- 加载图片的几种方式
- ECS Linux开启swap(虚拟内存)
- 第四周 项目二-建立单链表算法库