CMB22. K点游戏
描述
输入描述
输入为3个整数,分别对应N,K,W,中间用空格隔开输出描述
输出为概率值,保留5位小数示例1
输入:
21 17 10
输出:
0.73278
C 解法, 执行用时: 1ms, 内存消耗: 504KB, 提交时间: 2020-08-10
#include<stdio.h> int main() { int n,k,w; int i; scanf("%d %d %d",&n,&k,&w); double dp[k+w]; double temp; for(i=k;i<=n;i++) dp[i]=1; for(i=n+1;i<k+w;i++) dp[i]=0; temp=((n-k+1)<w)?(n-k+1):w; for(i=k-1;i>=0;i--) { dp[i]=temp/w; temp+=dp[i]-dp[i+w]; } printf("%.5f\n",dp[0]); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 348KB, 提交时间: 2020-06-18
#include<stdio.h> int main() { int n,k,w; int i; scanf("%d %d %d",&n,&k,&w); double dp[k+w]; double temp; for(i=k;i<=n;i++) dp[i]=1; for(i=n+1;i<k+w;i++) dp[i]=0; temp=((n-k+1)<w)?(n-k+1):w; for(i=k-1;i>=0;i--) { dp[i]=temp/w; temp+=dp[i]-dp[i+w]; } printf("%.5f\n",dp[0]); return 0; }