本题题意是求1到n的m方和。
思路:构建差分表,利用牛顿公式求和。
由于多处涉及到高精度,直接利用java的biginteger包。
import java.util.Scanner;
import java.io.*;
import java.math.BigInteger;
public class Main {
static BigInteger c[]=new BigInteger [150];
static BigInteger h[][]=new BigInteger [150][150];
public static void chafenbiao(BigInteger n,int m){
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));
}
}
public static void main(String[] args) throws FileNotFoundException{
int T;
Scanner cinScanner=new Scanner(System.in);
T=cinScanner.nextInt();
while(T-->0){
BigInteger n=cinScanner.nextBigInteger().add(BigInteger.ONE);
int m=cinScanner.nextInt();
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]);
}
chafenbiao(n, m);
BigInteger ans=BigInteger.ZERO;
for(int i=1;i<=m+1;i++)
ans=ans.add(c[i].multiply(h[i-1][0]));
System.out.println(ans);
}
}
}