Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 100;
- double dp[101][101][2];
- bool used[101][101][2];
- double rec(int pos, int cont, int is_front){
- if(used[pos][cont][is_front]) return dp[pos][cont][is_front];
- double res = 0;
- if(pos == N) res = 1;
- else{
- // front
- for(bool next_is_front : {true, false}){
- if(next_is_front ^ is_front){
- res += 0.5 * rec(pos + 1, 1, next_is_front);
- }
- else{
- if(cont + 1 < 10)
- res += 0.5 * rec(pos + 1, cont + 1, next_is_front);
- }
- }
- }
- used[pos][cont][is_front] = true;
- return dp[pos][cont][is_front] = res;
- }
- int main(){
- cout << 1 - rec(0, 0, 0) << endl;
- return 0;
- }
Add Comment
Please, Sign In to add comment