题意:投掷n个骰子,问和至少为x的概率。
[code]:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long LL;
LL n,m,dp[30][200];
LL gcd(LL a,LL b){
return b==0?a:gcd(b,a%b);
}
int main(){
int i,j,k,cas,T;
scanf("%d",&cas);
for(T = 1;T <= cas;T++){
scanf("%lld%lld",&n,&m);
memset(dp,0,sizeof(dp));
dp[0][0] = 1;
for(i = 1;i <= n;i++){
for(j = 1;j < 200;j++){
for(k = 1;k <= 6&&j-k>=0;k++)
dp[i][j] += dp[i-1][j-k];
}
}
LL p,q,g;p = q = 0;
for(i = 1;i < 200;i++){
q += dp[n][i];
if(i>=m) p += dp[n][i];
}
g = gcd(p,q);
p/=g;q/=g;
printf("Case %d: ",T);
if(p==0||q==0) printf("0\n");
else if(p == q) printf("1\n");
else{
printf("%lld/%lld\n",p,q);
}
}
return 0;
}