输入一行5个整数:n,m,i,j,k
输出一行字符串代表Bob的生存概率
10 10 3 2 5
945/1024
var args = readline().split(' '); var n = parseInt(args[0]), m = parseInt(args[1]), i = parseInt(args[2]), j = parseInt(args[3]), k = parseInt(args[4]); var prePoints = [[i,j,1]]; var curPoints = []; function isInArea (pointX, pointY) { if(pointX >= 0 && pointX < n && pointY >= 0 && pointY < m) { return 1 } return 0; } function checkAndPushPoint (pointX, pointY, count) { if(isInArea(pointX, pointY)) { var item = curPoints.find((item) => item[0] == pointX && item[1] == pointY); if(item) { item[2] += count; } else { curPoints.push([pointX, pointY, count]) } } } for(var s = 1; s <= k; s++) { for(var p = 0, len = prePoints.length; p < len; p++) { var point = prePoints[p]; var x = point[0], y = point[1], count = point[2]; checkAndPushPoint(x-1,y,count); checkAndPushPoint(x+1,y,count); checkAndPushPoint(x,y-1,count); checkAndPushPoint(x,y+1,count); } prePoints = curPoints; curPoints = []; } var path = 0; for(var p = 0, len = prePoints.length; p < len; p++) { path += prePoints[p][2]; } var total = Math.pow(4,k); var gcd = gcd(path,total); function gcd(m, n) { return n == 0 ? m : gcd(n, m % n); } console.log(`${path/gcd}/${total/gcd}`)
import java.util.*; public class Main { public static int n=0; public static int m=0; public static void main(String[] args){ Scanner sc = new Scanner(System.in); n = sc.nextInt(); m = sc.nextInt(); int x = sc.nextInt(); int y = sc.nextInt(); int steps = sc.nextInt(); long[][][] dp = new long[n][m][steps+1]; dp[x][y][0] = 1; for(int l=1; l<=steps; l++){ for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ dp[i][j][l] += getValue(dp,l-1,i-1,j); dp[i][j][l] += getValue(dp,l-1,i+1,j); dp[i][j][l] += getValue(dp,l-1,i,j-1); dp[i][j][l] += getValue(dp,l-1,i,j+1); } } } long res = 0; for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ res += dp[i][j][steps]; } } long total = (long)Math.pow(4,steps); long gcd = gcd(res,total); String s = (res/gcd)+"/"+(total/gcd); System.out.println(s); } public static long getValue(long[][][] dp,int l,int x,int y){ if(x<0 || x>=n || y<0 || y>=m){ return 0; } return dp[x][y][l]; } public static long gcd(long m, long n) { return n == 0 ? m : gcd(n, m % n); } }