题意:
思路:
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using namespace std; double dp[3][300]; int main() { int n,m; int l,r; int i,j,k; double ans; int temp,now; while(scanf("%d%d%d%d",&n,&m,&l,&r)!=EOF) { if(n==0&&m==0&&l==0&&r==0) break; dp[0][0]=1; for(i=1;i<n;i++) dp[0][i]=0; now=0; ans=0; while(m--) { scanf("%d",&temp); for(i=0;i<n;i++) { dp[now^1][i]=dp[now][(i-temp+n)%n]*0.5+dp[now][(i+temp)%n]*0.5; } now=now^1; } for(i=l-1;i<r;i++) { ans+=dp[now][i]; } printf("%.4lf ",ans); } return 0; }