2016蓝桥杯假期任务之《概率计算》

问题描述
  生成n个∈[a,b]的随机整数,输出它们的和为x的概率。
输入格式
  一行输入四个整数依次为n,a,b,x,用空格分隔。
输出格式
  输出一行包含一个小数位和为x的概率,小数点后保留四位小数
样例输入
2 1 3 4
样例输出
0.3333
数据规模和约定
  对于50%的数据,n≤5.
  对于100%的数据,n≤100,b≤100.
代码如下:

import java.text.DecimalFormat;
import java.util.Scanner;


public class Main {

	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		int n=input.nextInt();
		int a=input.nextInt();
		int b=input.nextInt();
		int x=input.nextInt();
		double [][]temp=new double[100][10000];
		DecimalFormat df = new DecimalFormat( "0.0000"); 
		if (n*b<x)
		{
			System.out.println(df.format(0));
		}
		else
		{
			for (int i=a;i<=b;i++)
			{
				temp[1][i]=1/(double)(b-a+1);
			}
			for(int i = 2; i <= n; i++){
		        for(int j = a; j <= b; j++){
		         for(int k = 1; k <= x; k++){ 
		        	 if(k - j >= 0) {
		        		 temp[i][k] += temp[i - 1][k - j] / (double)(b - a + 1);
		        	 }
		         }
		        }
			}
			System.out.println(df.format(temp[n][x]));
		}

	}

}

运行结果:

2 1 3 4
0.3333



你可能感兴趣的:(java,博客,Java学习)