poj 2515 Birthday Cake


 1 /**
2 大意 : 求1^m + 2^m + 3^m + 4^m +....+ n^m
3 解题步骤:
4 先构造从0到m的第1阶差分序列,然后以下所有2----》p阶的差分表。
5 令C[n+1][1]=n,用递推构造C[n+1][1]~C[n+1][p+1]的组合数打个一维表;
6 最后利用C0*C[1]+C1*C[2]+...+Cp*C[p+1]得出答案...
7 注意: java 提交时,一定要将包名去掉,,并且类名为Main
8 这一题就是因为多加了个包名,,一直是 runtime error。。一个多小时。。血的教训啊。。
9
10 **/
11
12 import java.io.OutputStreamWriter;
13 import java.io.PrintWriter;
14 import java.math.BigInteger;
15 import java.util.Scanner;
16
17 public class Main {
18
19 static BigInteger h[][] = new BigInteger [150][150];
20 static BigInteger []c = new BigInteger [150];
21 public static void getc(BigInteger n,int m){
22 c[1] =n;
23 for(int i=2 ; i<=m+1 ; i++ ){
24 c[i]= c[i-1].multiply(n.subtract(BigInteger.valueOf(i-1))).divide(BigInteger. valueOf(i));
25 }
26
27 }
28
29 public static void main(String[] args) {
30 Scanner cin = new Scanner(System. in);
31 int t = cin.nextInt();
32 while(t-->0){
33 BigInteger n = cin.nextBigInteger().add(BigInteger. ONE);
34 int m = cin.nextInt();
35 for(int i=0; i<=m;i++)
36 h[0][i] = BigInteger. valueOf(i).pow(m);
37
38 for(int i=1;i<=m;i++){
39 for(int j=0;j<=m-i;j++){
40 h[i][j] = h[i-1][j+1].subtract( h[i-1][j]);
41 }
42 }
43 BigInteger ans = BigInteger. ZERO;
44 getc(n,m);
45 for(int i=0;i<=m;i++){
46 ans = ans.add( h[i][0].multiply( c[i+1]));
47 }
48 System. out.println(ans);
49 }
50
51 }
52
53 }

poj 2515 Birthday Cake

时间: 2024-11-07 09:18:17

poj 2515 Birthday Cake的相关文章

poj 1020 Anniversary Cake(切正方形蛋糕+搜索)

Anniversary Cake Nahid Khaleh decides to invite the kids of the "Shahr-e Ghashang" to her wedding anniversary. She wants to prepare a square-shaped chocolate cake with known size. She asks each invited person to determine the size of the piece o

poj 1020 Anniversary Cake dfs的灵活结构

题意: 给一个目标正方形边长和n个小正方形的边长,问是否可以用这n个小正方形填满目标正方形. 分析: dfs不一开始就定好放入顺序,而是用已放入的个数代表深搜维度. 代码: #include <iostream> using namespace std; int box_size; int n; int size_num[16]; int col[64]; bool dfs(int cnt) { if(cnt==n) return true; int minx=INT_MAX,col_inde

poj 1020 Anniversary Cake (DFS)

出处: http://blog.csdn.net/lyy289065406/article/details/6683250 大致题意: 有一块边长为BoxSize的正方形的大蛋糕,现在给出n块不同尺寸的正方形的小蛋糕的边长,问是否能把大蛋糕按恰好切割为这n块小蛋糕,要求每块小蛋糕必须为整块. 解题思路: 有技巧的DFS 可以把大蛋糕想象为一个蛋糕盒子,然后往里面装小蛋糕. 装蛋糕时遵循以下原则: 自下而上,自左至右: 即先装好盒子底部,再继续往上层装,且装每一层时都靠左边放蛋糕: 大蛋糕优先装,

poj 3014 Cake Pieces and Plates 整数拆分

题意: 将m拆成n个数,允许某个数为0,求拆分方案数. 分析: 裸的整数拆分,设h(m,n)表示将m拆成n个数,允许某数为0的方案数,递推方程见代码.很有意思的是,参考上一篇写poj1221的博文中,设f(m,n)表示将m进行任意份数不允许有0的整数拆分,且最大元素小于等于m的方案数,则h(m,n)==f(m,n)....求解此等式意义... 代码: //poj 3014 //sep9 #include <iostream> using namespace std; const int max

poj 3587 The Biggest Cake 正弦定理

题意: 给n个点,求其中3个点构成三角形的最大外接圆半径. 分析: 正弦定理,A/sina=B/sinb=C/sinc=ABC/(2*s)=2*R. 代码: //poj 3587 //sep9 #include <iostream> #include <cmath> using namespace std; const int maxN=700; double dis[maxN][maxN]; double x[maxN],y[maxN]; double cross(double

POJ 3743 LL’s cake(圆+PSLG)

题意是给你一块在原点半径为10的圆,然后告诉你一条直线在圆弧上的极角,相当于用这条直线把这个圆分成两半,然后一共是n条直线切圆,就好比切蛋糕,问你其中最大一块的面积是多少. 如果我们将圆弧转化成直线边,那么这个题就变成PSLG裸题,但是这里是圆弧,所以我们需要将其转化. 我先将所有在圆上的点记录下来,最后极角排序,绕一周,这些点分割出来肯定会有一部分算面积的时候是要算上那部分弓型面积,但是有一部分不是,主要是这部分面积仅仅就是这块弓型面积,没有其他多边形面积,例如样例3,为了避免这种问题,我们可

POJ 1775 sum of Factorial (数论)

链接:http://poj.org/problem?id=1775 Description John von Neumann, b. Dec. 28, 1903, d. Feb. 8, 1957, was a Hungarian-American mathematician who made important contributions to the foundations of mathematics, logic, quantum physics,meteorology, science,

Poj 1020

传送门:http://poj.org/problem?id=1020 深搜,dps真的是一个深坑,想哭 填蛋糕,从左往右从下往上,从大的开始,每次要把底层填满再填上面的 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 5 const int MAX=45; 6 int t; 7 int m; 8 int cake[MAX]; 9 int piece[11]; 10 int number; 11 in

[转] POJ数学问题

转自:http://blog.sina.com.cn/s/blog_6635898a0100magq.html 1.burnside定理,polya计数法 这个大家可以看brudildi的<组合数学>,那本书的这一章写的很详细也很容易理解.最好能完全看懂了,理解了再去做题,不要只记个公式. *简单题:(直接用套公式就可以了) pku2409 Let it Bead      http://acm.pku.edu.cn/JudgeOnline/problem?id=2409 pku2154 Co