果然还是被虐的份,啥都不说了,还是安心看书学吧,这两天被数学虐残。
这是一道求期望的题,想不明白,贴上官方的解题报告。
留着慢慢研究 。
好吧看到其他人写的发现有自带函数,就再贴一个新的。就得在最下面:
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
static BigInteger [][] c = new BigInteger[110][110];
public static void del() {
for(int i = 0; i <= 105; i ++)
c[i][0] = c[i][i] = BigInteger.ONE;
for(int i = 1; i <= 105; i ++)
{
for(int j = 1; j < i; j ++)
c[i][j] = (c[i-1][j-1] .add(c[i-1][j]));
}
}
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int d;
BigInteger n=BigInteger.ZERO,up=BigInteger.ZERO,down=BigInteger.ZERO,temp=BigInteger.ZERO;
del();
while(cin.hasNext())
{
n=cin.nextBigInteger();
d=cin.nextInt();
up=c[d][2].multiply(n.add(BigInteger.valueOf(4)).pow(2));
down=BigInteger.valueOf(9).multiply(n.pow(d));
if(up.compareTo(down)==0)
{
System.out.println(1);
}
else {
temp=up.gcd(down);
System.out.println(up.divide(temp)+"/"+down.divide(temp));
}
}
cin.close();
}
}
下面是代码(旧):
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
static BigInteger [][] c = new BigInteger[110][110];
public static void del() {
for(int i = 0; i <= 105; i ++)
c[i][0] = c[i][i] = BigInteger.ONE;
for(int i = 1; i <= 105; i ++)
{
for(int j = 1; j < i; j ++)
c[i][j] = (c[i-1][j-1] .add(c[i-1][j]));
}
}
public static BigInteger gcd(BigInteger a ,BigInteger b) {
if(a .compareTo(b)<0)
return gcd(b,a);
if(a .mod(b).compareTo(BigInteger.ZERO)== 0)
return b;
return gcd(b, a.mod(b));
}
public static BigInteger pow(BigInteger a ,int b) {
BigInteger ans = BigInteger.ONE;
for(int i=1;i<=b;i++)
{
ans=ans.multiply(a);
}
return ans;
}
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int d;
BigInteger n=BigInteger.ZERO,up=BigInteger.ZERO,down=BigInteger.ZERO,temp=BigInteger.ZERO;
del();
while(cin.hasNext())
{
n=cin.nextBigInteger();
d=cin.nextInt();
up=c[d][2].multiply(pow(n.add(BigInteger.valueOf(4)),2));
down=BigInteger.valueOf(9).multiply(pow(n, d));
if(up.compareTo(down)==0)
{
System.out.println(1);
}
else {
temp=gcd(up, down);
System.out.println(up.divide(temp)+"/"+down.divide(temp));
}
}
cin.close();
}
}