Sicily 1389. Linear pachinko

Source: Internet
Author: User

1389. Linear Pachinko Constraints

Time limit:1 secs, Memory limit:32 MB

Description

This problem was inspired by Pachinko, a popular game in Japan. A traditional pachinko machine was a cross between a vertical pinball machine and a slots machine. The player launches small steel balls to the top of the machine using a plunger as in pinball. A ball drops through a maze of pins so deflect the ball, and eventually the ball either exits at a hole in the bottom an D is lost, or lands in one of the many gates scattered throughout the machine which reward the player with more balls in varyi Ng amounts. Players who collect enough balls can trade them on for prizes.

For the purposes of this problem, aLinearPachinko machine was a sequence of one or more of the Following:holes ("."), Floor tiles ("_"), Walls ("|"), and mountains ("/\"). A wall or mountain would never be adjacent to another wall or mountain. To play the game, a ball was dropped at random over some character within a machine. A ball dropped into a hole falls through. A ball dropped onto a floor tile stops immediately. A ball dropped onto the left side of a mountain rolls to the left across any number of consecutive floor tiles until it FA Lls into a hole, falls off the left end of the machine, or stops by hitting a wall or mountain. A ball dropped onto the right side of a mountain behaves similarly. A ball dropped onto a wall behaves as if it were dropped onto the left or right side of a mountain, with a 50% chance for each. If a ball was dropped at random over the machine, with all starting positions being equally likely, what's the probability That the ball would fall either through a hole or off an end?

For example, consider the following machine, where the numbers just indicate character positions and is not part of the M Achine itself:

123456789
/\.| __/\.

The probabilities that a ball would fall through a hole or off the end of the machine is as follows, by position:1=100%, 2=100%, 3=100%, 4=50%, 5=0%, 6=0%, 7=0%, 8=100%, 9=100%. The combined probability for the whole machine was just the average, which is approximately 61.111%.

Input

The input consists of one or more linear pachinko machines, each 1–79 characters long and on a line by itself, followed by A line containing only "#" that signals the end of the input.

Output

Compute as accurately as possible the probability that a ball would fall through a hole or off the end WH En dropped at random, then output A, containing, so percentage truncatedto an integer by dropping any Fractional part.

Sample Input
/\.| __/\._._/\_|. __/\./\_...___./\._/\__|.| _|.| _|.| _____|_____#
Sample Output
61531000100505310

Compare the water simulation problem, pay attention to the special situation is good, 0s:

#include <stdio.h> #include <string.h>char a[85];int calculate (char dir, int pos) {if (pos = = 0 &&  dir = = ' l ') return 1;//note It is successful to roll directly from the edge, same as else if (pos = = (int) strlen (a)-1 && dir = = ' R ') return    1;                else if (dir = = ' L ') {for (int i = pos-1; I >= 0; i--) {if (a[i] = = '. ')            return 1;                else if (a[i] = = ' \ \ ' | | a[i] = = ' | ')        return 0; } return 1;//when the loop is finished, the description is ' _ ', then the end is rolled down from the edge, the same as} else if (dir = = ' R ') {for (int i = pos + 1; i < (int) Strlen (a);                i++) {if (a[i] = = '. ')            return 1;        else if (a[i] = = ' | ' | | a[i] = = '/') return 0;        } return 1;//}}int main () {while (gets (a) && a[0]! = ' # ') {float sum = 0;                for (int i = 0; i < (int) strlen (a); i++) {if (a[i] = = '. ')            sum + = 1;    else if (a[i] = = ' _ ') sum + = 0;        else if (a[i] = = '/') sum + = calculate (' l ', i);            else if (a[i] = = ' \ \ ') Sum + = calculate (' R ', i);                else if (a[i] = = ' | ')        Sum + = 0.5 * Calculate (' l ', i) + 0.5 * Calculate (' R ', i);        } int int_sum = sum * (float) strlen (a);//go to the end printf ("%d\n", int_sum);    Memset (A, ' n ', sizeof (a)); } return 0;}


Sicily 1389. Linear pachinko

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.