You know that Japan is the country with almost the largest 'electronicdevices per person' ratio. So you might be quite surprised to find out that theprimary school in Japan teaches to count using a Soroban — an abacus developed in Japan. This phenomenon has itsreasons, of course, but we are not going to speak about them. Let's have a lookat the Soroban's construction.
Soroban consists of some number of rods, each rod contains five beads.We will assume that the rods are horizontal lines. One bead on each rod (theleftmost one) is divided from the others by a bar (the reckoning bar). Thissingle bead is called go-dama and four others are ichi-damas. Each rod is responsible for representing a single digit from 0 to 9.We can obtain the value of a digit by following simple algorithm:
· Set thevalue of a digit equal to 0.
· If thego-dama is shifted to the right, add 5.
· Add thenumber of ichi-damas shifted to the left.
Thus, the upper rod on the picture shows digit 0, the middle one showsdigit 2 and the lower one shows 7. We will consider the top rod to representthe last decimal digit of a number, so the picture shows number 720.
Write the program that prints the way Soroban shows the given number n.
Input
The first line contains a single integer n (0 ≤ n < 109).
Output
Print the description of the decimal digits of number n from the last one to thefirst one (as mentioned on the picture in the statement), one per line. Print the beads as large English letters 'O', rod piecesas character '-' and the reckoning bar as '|'. Print as many rods, as manydigits are in the decimal representation of number n without leading zeroes. We can assume that number 0 has no leadingzeroes.
Sample test(s)
input
2
output
O-|OO-OO
input
13
output
O-|OOO-O
O-|O-OOO
input
720
output
O-|-OOOO
O-|OO-OO
-O|OO-OO
解题思路:
模拟
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
void output(int x)
{
if (x<5)
{
printf("O-");
}
else
printf("-O");
printf("|");
x %= 5;
int i;
for (i = 0; i<x; i++)
printf("O");
printf("-");
for (i = 0; i<4 - x; i++)
printf("O");
printf("\n");
}
int main()
{
int n;
char s[15];
while (scanf("%s", s) != EOF)
{
int i, len = strlen(s);
for (i = len - 1; i >= 0; i--)
output(s[i] - '0');
}
return 0;
}