Submission #1303557


Source Code Expand

#include<iostream>
#include<vector>
#include<string>
#include<stdio.h>
using namespace std;

#define FOR(k,m,n) for(int (k)=(m);(k)<(n);(k)++)
#define rep(i,n) FOR((i),0,(n))

typedef long long ll;

const int INF=1e9+7;
const int MAX_N=1e2+10;
double dp[2][2*MAX_N][MAX_N][MAX_N];

ll max(ll a,ll b){
	if(a>b)return a;
	else return b;
}

ll divi(ll n,ll d){
	if(n%d!=0)return 0;
	else return divi(n/d,d)+1;
}
ll di(ll n,ll d){
	if(n%d!=0)return n;
	else return di(n/d,d);
}
/*void solve(int n){
	*if(a<0 || b<0 || c<0)return 0;
	if(dp[n][a][b][c]!=0)return dp[n][a][b][c];
	if(n==0 && a==0 && b==0 && c==0)return dp[n][a][b][c]=1;
	if(n==0)return dp[n][a][b][c]=0;
	FOR(i,1,7){
		dp[n][a][b][c]+=solve(n-1,a-divi(i,2),b-divi(i,3),c-divi(i,5))/6.0;
	}
	return dp[n][a][b][c];
	dp[0][0][0][0]=1;
	int cur=0;
	rep(i,n){
		int next=cur^1;
		memset(dp[next],0,sizeof(dp[next]));
		rep(j,2*i+1)rep(k,i+1)rep(l,i+1)if(dp[i][j][k][l]){
			FOR(m,1,7)dp[next][j+divi(m,2)][k+divi(m,3)][l+divi(m,5)]=dp[cur][j][k][l];
		}
		cur=next
	}
}*/
int main(){
	ll n,d;
	cin>>n>>d;
	if(di(di(di(d,5),3),2)!=1)cout<<0<<endl;
	double ans=0;
	int i_m=divi(d,2),j_m=divi(d,3),k_m=divi(d,5);
	dp[0][0][0][0]=1;
	int cur=0;
	rep(i,n){
		int next=cur^1;
		memset(dp[next],0,sizeof(dp[next]));
		rep(j,2*i+1)rep(k,i+1)rep(l,i+1)if(dp[cur][j][k][l]){
			FOR(m,1,7)dp[next][j+divi(m,2)][k+divi(m,3)][l+divi(m,5)]+=dp[cur][j][k][l]/6.0;
		}
		cur=next;
	}
	FOR(i,i_m,201)FOR(j,j_m,101)FOR(k,k_m,101)ans+=dp[cur][i][j][k];
	printf("%.7f\n",ans);
}

Submission Info

Submission Time
Task D - サイコロ
User ryogo108
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1583 Byte
Status CE

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:59:37: error: ‘memset’ was not declared in this scope
   memset(dp[next],0,sizeof(dp[next]));
                                     ^