Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- typedef long double ldouble;
- ldouble dp[2][1000001];
- int n_count = 2;
- bool parity = false;
- int main(){
- int tcase;
- cin>>tcase;
- while(tcase--){
- int n,k;
- cin>>n>>k;
- if(k<n || k>6*n){
- printf("0\n");
- continue;
- }
- parity = false;
- for(int i =1;i<=6;i++){
- dp[1][i] = (ldouble)1 / (ldouble)6;
- }
- for(n_count = 2; n_count<=n;n_count++){
- int lower = n_count;
- int upper = n_count * 6;
- for(int i = lower; i<= upper; i++){
- for(int j = 1; j<=6 && i-j > 0; j++){
- if(j==1){
- dp[parity][i] = dp[!parity][i-j];
- }else{
- dp[parity][i] += dp[!parity][i-j];
- }
- }
- dp[parity][i] = dp[parity][i]/(ldouble)6;
- }
- parity = !parity;
- }
- printf("%d\n",(int)(100*dp[n % 2][k]));
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement